elharo commented on code in PR #96:
URL: https://github.com/apache/xerces-j/pull/96#discussion_r3539164383


##########
tests/dom/dom3/Test.java:
##########
@@ -43,643 +44,375 @@
 import org.w3c.dom.ls.LSResourceResolver;
 import org.w3c.dom.ls.LSSerializer;
 
-import dom.util.Assertion;
-
-/**
- * The program tests vacarious DOM Level 3 functionality
- * 
- * @version $Id$
- */
-public class Test implements DOMErrorHandler, LSResourceResolver {
-    
-    static int errorCounter = 0;
-    static DOMErrorHandler errorHandler = new Test();
-    static LSResourceResolver resolver = new Test();
-    
-    public static void main( String[] argv) {
-        try {
-            boolean namespaces = true;
-            System.out.println("Running dom.dom3.Test...");
-            
System.setProperty(DOMImplementationRegistry.PROPERTY,"org.apache.xerces.dom.DOMImplementationSourceImpl
 org.apache.xerces.dom.DOMXSImplementationSourceImpl");
-
-            
-            DOMImplementationLS impl = 
(DOMImplementationLS)DOMImplementationRegistry.newInstance().getDOMImplementation("LS");
-
-            Assertion.verify(impl!=null, "domImplementation != null");
-
-            LSParser builder = 
impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS,
-                                                       null);
-
-            LSSerializer writer = impl.createLSSerializer();
-            DOMConfiguration config = writer.getDomConfig();
-            
config.setParameter("namespaces",(namespaces)?Boolean.TRUE:Boolean.FALSE);
-            config.setParameter("validate",Boolean.FALSE);
-            
-            //----------------------------
-            // TEST: lookupPrefix
-            //       isDefaultNamespace
-            //       lookupNamespaceURI
-            //----------------------------
-            //System.out.println("TEST #1: lookupPrefix, isDefaultNamespace, 
lookupNamespaceURI, input: tests/dom/dom3/input.xml");
-            {
-
-                Document doc = builder.parseURI("tests/dom/dom3/input.xml");
-                NodeList ls = doc.getElementsByTagName("a:elem_a"); 
-
-                NodeImpl elem = (NodeImpl)ls.item(0);
-                if (namespaces) {
-                    
//System.out.println("[a:elem_a].lookupPrefix('http://www.example.com', true) 
== null");
-                    
Assertion.verify(elem.lookupPrefix("http://www.example.com";).equals("ns1"), 
-                                     
"[a:elem_a].lookupPrefix(http://www.example.com)==null");
-
-
-                    
//System.out.println("[a:elem_a].isDefaultNamespace('http://www.example.com') 
== true");
-                    
Assertion.verify(elem.isDefaultNamespace("http://www.example.com";) == true, 
-                                     
"[a:elem_a].isDefaultNamespace(http://www.example.com)==true");
-
-
-                    
//System.out.println("[a:elem_a].lookupPrefix('http://www.example.com', false) 
== ns1");
-                    
Assertion.verify(elem.lookupPrefix("http://www.example.com";).equals("ns1"), 
-                                     
"[a:elem_a].lookupPrefix(http://www.example.com)==ns1");
-
-
-                    
Assertion.verify(elem.lookupNamespaceURI("xsi").equals("http://www.w3.org/2001/XMLSchema-instance";),
 
-                                     "[a:elem_a].lookupNamespaceURI('xsi') == 
'http://www.w3.org/2001/XMLSchema-instance'" );
-
-                } else {
-                    Assertion.verify( 
elem.lookupPrefix("http://www.example.com";) == 
null,"lookupPrefix(http://www.example.com)==null"); 
-                }
-
-                ls = doc.getElementsByTagName("bar:leaf");
-                elem = (NodeImpl)ls.item(0);
-                Assertion.verify(elem.lookupPrefix("url1:").equals("foo"), 
-                                 "[bar:leaf].lookupPrefix('url1:', false) == 
foo");
-                //System.out.println("[bar:leaf].lookupPrefix('url1:', false) 
== "+ );
-
-                //System.out.println("==>Create b:baz with namespace 'b:' and 
xmlns:x='b:'");
-                ls = doc.getElementsByTagName("baz");
-                elem = (NodeImpl)ls.item(0);
-                ls = doc.getElementsByTagName("elem8");
-                elem = (NodeImpl)ls.item(0);
-                Element e1 = doc.createElementNS("b:","p:baz");
-                e1.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:x", 
"b:");
-                elem.appendChild(e1);
-
-
-                
Assertion.verify(((NodeImpl)e1).lookupPrefix("b:").equals("p"), 
-                                 "[p:baz].lookupPrefix('b:', false) == p");
-
-
-
-                //System.out.println("[p:baz].lookupPrefix('b:', false) == "+ 
((NodeImpl)e1).lookupPrefix("b:",false));
-
-                
Assertion.verify(elem.lookupNamespaceURI("xsi").equals("http://www.w3.org/2001/XMLSchema-instance";),
 
-                                 "[bar:leaf].lookupNamespaceURI('xsi') == 
'http://www.w3.org/2001/XMLSchema-instance'" );
-
-            
-            }
-
-            //************************
-            //* Test normalizeDocument()
-            //************************
-            //System.out.println("TEST #2: normalizeDocumention() - 3 errors, 
input: tests/dom/dom3/schema.xml");
-            {
-                errorCounter = 0;
-                config = builder.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                Document core = builder.parseURI("tests/dom/dom3/schema.xml");
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-                
-                errorCounter = 0;    
-                NodeList ls2 = core.getElementsByTagName("decVal");
-                Element testElem = (Element)ls2.item(0);
-                testElem.removeAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns");
-
-                ls2 = core.getElementsByTagName("v02:decVal");
-                testElem = (Element)ls2.item(0);
-                testElem.setPrefix("myPrefix");
-                Element root = core.getDocumentElement();
-
-                Element newElem = core.createElementNS(null, "decVal");
-                String data="4.5";
-                if (true) {
-                        data = "string";
-                } 
-                newElem.appendChild(core.createTextNode(data));
-                root.insertBefore(newElem, testElem);
-
-                newElem = core.createElementNS(null,  "notInSchema");
-                newElem.appendChild(core.createTextNode("added new element"));
-                root.insertBefore(newElem, testElem);
-
-                root.appendChild(core.createElementNS("UndefinedNamespace", 
"NS1:foo"));
-                config = core.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("schema-type", 
"http://www.w3.org/2001/XMLSchema";);
-                core.normalizeDocument();
-                Assertion.verify(errorCounter == 3, "3 errors should be 
reported");
-                               
-                errorCounter = 0;
-                config.setParameter("validate", Boolean.FALSE);
-                config.setParameter("comments", Boolean.FALSE);
-                core.normalizeDocument();
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-
-
-                config = builder.getDomConfig();
-                config.setParameter("validate", Boolean.FALSE);
-                
-            }
-
-
-            //************************
-            //* Test normalizeDocument()
-            //************************
-            // System.out.println("TEST #3: normalizeDocumention() + psvi, 
input: data/personal-schema.xml");
-            {
-                errorCounter = 0;
-                config = builder.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("psvi", Boolean.TRUE);
-                Document core = builder.parseURI("data/personal-schema.xml");
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-
-                NodeList ls2 = core.getElementsByTagName("person");
-
-                Element testElem = (Element)ls2.item(0);
-                
Assertion.verify(((ElementPSVI)testElem).getElementDeclaration().getName().equals("person"),
 "testElem decl");
-                Element e1 = core.createElementNS(null, "person");
-                
-                core.getDocumentElement().appendChild(e1);
-                e1.setAttributeNS(null, "id", "newEmp");
-                Element e2 = core.createElementNS(null, "name");
-                e2.appendChild(core.createElementNS(null, "family"));
-                e2.appendChild(core.createElementNS(null, "given"));
-                e1.appendChild(e2);
-                e1.appendChild(core.createElementNS(null, "email"));
-                Element e3 = core.createElementNS(null, "link");
-                e3.setAttributeNS(null, "manager", "Big.Boss");
-                e1.appendChild(e3);
-
-                testElem.removeAttributeNode(testElem.getAttributeNodeNS(null, 
"contr"));
-                NamedNodeMap map = testElem.getAttributes();
-                config = core.getDomConfig();
-                errorCounter = 0;
-                config.setParameter("psvi", Boolean.TRUE);
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("schema-type", 
"http://www.w3.org/2001/XMLSchema";);
-                core.normalizeDocument();
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-                
Assertion.verify(((ElementPSVI)e1).getElementDeclaration().getName().equals("person"),
 "e1 decl");              
-                
-                config = builder.getDomConfig();
-                config.setParameter("validate", Boolean.FALSE);
-                
-
-            }
-
-            //************************
-            //* Test normalizeDocument(): core tests
-            //************************
-            // System.out.println("TEST #4: normalizeDocument() core");
-            {
-
-                // check that namespace normalization algorithm works correctly
-                Document doc= new DocumentImpl(); 
-                Element root = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:stylesheet");
-                doc.appendChild(root);
-                root.setAttributeNS("http://attr1";, "xsl:attr1","");
-
-                Element child1 = doc.createElementNS("http://child1";, 
"NS2:child1");
-                child1.setAttributeNS("http://attr2";, "NS2:attr2","");
-                root.appendChild(child1);
-
-                Element child2 = 
doc.createElementNS("http://child2","NS4:child2";);
-                child2.setAttributeNS("http://attr3","attr3";, "");
-                root.appendChild(child2);
-
-                Element child3 = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform","xsl:child3";);
-                child3.setAttributeNS("http://a1","attr1";, "");
-                child3.setAttributeNS("http://a2","xsl:attr2";, "");
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:a1", "http://a1";);
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:xsl", "http://a2";);
-                
-                Element child4 = doc.createElementNS(null, "child4");
-                child4.setAttributeNS("http://a1";, "xsl:attr1", "");
-                child4.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns", "default");
-                child3.appendChild(child4);
-                root.appendChild(child3);
-
-                doc.normalizeDocument();
-                
-                //
-                // assertions
-                //
-
-                // xsl:stylesheet should include 2 namespace declarations
-                String name = root.getNodeName();
-                Assertion.verify(name.equals("xsl:stylesheet"), 
"xsl:stylesheet");
-
-                String value = 
root.getAttributeNS("http://www.w3.org/2000/xmlns/";, "xsl");
-                Assertion.verify(value!=null, "xmlns:xsl != null");
-                
Assertion.verify(value.equals("http://www.w3.org/1999/XSL/Transform";), 
"xmlns:xsl="+value);
-                
-                value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr1";), 
"xmlns:NS1="+value);
-
-                // child includes 2 namespace decls
-
-                Assertion.verify(child1.getNodeName().equals("NS2:child1"), 
"NS2:child1");
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS2");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://child1";), 
"xmlns:NS2="+value);
-
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr2";), 
"xmlns:NS1="+value);
-
-
-                // child3
-                
-
-                Assertion.verify(child3.getNodeName().equals("xsl:child3"), 
"xsl:child3");
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a2";), 
"xmlns:NS1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"a1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a1";), "xmlns:a1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xsl");
-                Assertion.verify(value!=null && 
-                                 
value.equals("http://www.w3.org/1999/XSL/Transform";), "xmlns:xsl="+value);
-
-                
-                Attr attr = child3.getAttributeNodeNS("http://a2";, "attr2");
-                Assertion.verify(attr != null, "NS1:attr2 !=null");
-
-                Assertion.verify(child3.getAttributes().getLength() == 5, 
"xsl:child3 has 5 attrs");
-                
-                // child 4
-                Attr temp = 
child4.getAttributeNodeNS("http://www.w3.org/2000/xmlns/";, "xmlns");
-                Assertion.verify(temp.getNodeName().equals("xmlns"), 
"attribute name is xmlns");
-                Assertion.verify(temp.getNodeValue().length() == 0, 
"xmlns=''");                
-                /*
-                OutputFormat format = new OutputFormat((Document)doc);
-                format.setLineSeparator(LineSeparator.Windows);
-                format.setIndenting(true);
-                format.setLineWidth(0);             
-                format.setPreserveSpace(true);
-                XMLSerializer serializer = new XMLSerializer(System.out, 
format);
-                serializer.serialize(doc); 
-                */               
-
-            }
-
-
-            //************************
-            //* Test normalizeDocument(): core tests
-            //************************
-            //System.out.println("TEST #4: namespace fixup during 
serialization");
-            {
-
-                Document doc= new DocumentImpl(); 
-                Element root = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:stylesheet");
-                doc.appendChild(root);
-                root.setAttributeNS("http://attr1";, "xsl:attr1","");
-
-                Element child1 = doc.createElementNS("http://child1";, 
"NS2:child1");
-                child1.setAttributeNS("http://attr2";, "NS2:attr2","");
-                root.appendChild(child1);
-
-                Element child2 = 
doc.createElementNS("http://child2","NS4:child2";);
-                child2.setAttributeNS("http://attr3","attr3";, "");
-                root.appendChild(child2);
-
-                Element child3 = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform","xsl:child3";);
-                child3.setAttributeNS("http://a1","attr1";, "");
-                child3.setAttributeNS("http://a2","xsl:attr2";, "");
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:a1", "http://a1";);
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:xsl", "http://a2";);
-                
-                Element child4 = doc.createElementNS(null, "child4");
-                child4.setAttributeNS("http://a1";, "xsl:attr1", "");
-                child4.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns", "default");
-
-                child3.appendChild(child4);
-                root.appendChild(child3);
-
-
-                // serialize data
-                writer.getDomConfig().setParameter("namespaces", Boolean.TRUE);
-                String xmlData = writer.writeToString(doc);
-                Reader r = new StringReader(xmlData);
-                LSInput in = impl.createLSInput();
-                in.setCharacterStream(r);
-                doc = builder.parse(in);
-
-                //
-                // make sure algorithm works correctly
-                //
-
-                root = doc.getDocumentElement();
-                child1 = (Element)root.getFirstChild();
-                child2 = (Element)child1.getNextSibling();
-                child3 = (Element)child2.getNextSibling();
-
-
-                // xsl:stylesheet should include 2 namespace declarations
-                String name = root.getNodeName();
-                Assertion.verify(name.equals("xsl:stylesheet"), 
"xsl:stylesheet");
-
-                String value = 
root.getAttributeNS("http://www.w3.org/2000/xmlns/";, "xsl");
-                Assertion.verify(value!=null, "xmlns:xsl != null");
-                
Assertion.verify(value.equals("http://www.w3.org/1999/XSL/Transform";), 
"xmlns:xsl="+value);
-                
-                value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr1";), 
"xmlns:NS1="+value);
-
-                // child includes 2 namespace decls
-
-                Assertion.verify(child1.getNodeName().equals("NS2:child1"), 
"NS2:child1");
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS2");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://child1";), 
"xmlns:NS2="+value);
-
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr2";), 
"xmlns:NS1="+value);
-
-
-                // child3
-                
-
-                Assertion.verify(child3.getNodeName().equals("xsl:child3"), 
"xsl:child3");
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a2";), 
"xmlns:NS1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"a1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a1";), "xmlns:a1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xsl");
-                Assertion.verify(value!=null && 
-                                 
value.equals("http://www.w3.org/1999/XSL/Transform";), "xmlns:xsl="+value);
-
-                
-                Attr attr = child3.getAttributeNodeNS("http://a2";, "attr2");
-                Assertion.verify(attr != null, "NS6:attr2 !=null");
+public class Test extends TestCase implements DOMErrorHandler, 
LSResourceResolver {
+
+    private int errorCounter;
+    private DOMImplementationLS impl;
+    private LSParser builder;
+    private LSSerializer writer;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        System.setProperty(DOMImplementationRegistry.PROPERTY,
+            "org.apache.xerces.dom.DOMImplementationSourceImpl 
org.apache.xerces.dom.DOMXSImplementationSourceImpl");
+        impl = (DOMImplementationLS) 
DOMImplementationRegistry.newInstance().getDOMImplementation("LS");
+        assertNotNull("domImplementation != null", impl);

Review Comment:
   assertion message is backwards here, and probably not needed at all



##########
tests/dom/dom3/Test.java:
##########
@@ -43,643 +44,375 @@
 import org.w3c.dom.ls.LSResourceResolver;
 import org.w3c.dom.ls.LSSerializer;
 
-import dom.util.Assertion;
-
-/**
- * The program tests vacarious DOM Level 3 functionality
- * 
- * @version $Id$
- */
-public class Test implements DOMErrorHandler, LSResourceResolver {
-    
-    static int errorCounter = 0;
-    static DOMErrorHandler errorHandler = new Test();
-    static LSResourceResolver resolver = new Test();
-    
-    public static void main( String[] argv) {
-        try {
-            boolean namespaces = true;
-            System.out.println("Running dom.dom3.Test...");
-            
System.setProperty(DOMImplementationRegistry.PROPERTY,"org.apache.xerces.dom.DOMImplementationSourceImpl
 org.apache.xerces.dom.DOMXSImplementationSourceImpl");
-
-            
-            DOMImplementationLS impl = 
(DOMImplementationLS)DOMImplementationRegistry.newInstance().getDOMImplementation("LS");
-
-            Assertion.verify(impl!=null, "domImplementation != null");
-
-            LSParser builder = 
impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS,
-                                                       null);
-
-            LSSerializer writer = impl.createLSSerializer();
-            DOMConfiguration config = writer.getDomConfig();
-            
config.setParameter("namespaces",(namespaces)?Boolean.TRUE:Boolean.FALSE);
-            config.setParameter("validate",Boolean.FALSE);
-            
-            //----------------------------
-            // TEST: lookupPrefix
-            //       isDefaultNamespace
-            //       lookupNamespaceURI
-            //----------------------------
-            //System.out.println("TEST #1: lookupPrefix, isDefaultNamespace, 
lookupNamespaceURI, input: tests/dom/dom3/input.xml");
-            {
-
-                Document doc = builder.parseURI("tests/dom/dom3/input.xml");
-                NodeList ls = doc.getElementsByTagName("a:elem_a"); 
-
-                NodeImpl elem = (NodeImpl)ls.item(0);
-                if (namespaces) {
-                    
//System.out.println("[a:elem_a].lookupPrefix('http://www.example.com', true) 
== null");
-                    
Assertion.verify(elem.lookupPrefix("http://www.example.com";).equals("ns1"), 
-                                     
"[a:elem_a].lookupPrefix(http://www.example.com)==null");
-
-
-                    
//System.out.println("[a:elem_a].isDefaultNamespace('http://www.example.com') 
== true");
-                    
Assertion.verify(elem.isDefaultNamespace("http://www.example.com";) == true, 
-                                     
"[a:elem_a].isDefaultNamespace(http://www.example.com)==true");
-
-
-                    
//System.out.println("[a:elem_a].lookupPrefix('http://www.example.com', false) 
== ns1");
-                    
Assertion.verify(elem.lookupPrefix("http://www.example.com";).equals("ns1"), 
-                                     
"[a:elem_a].lookupPrefix(http://www.example.com)==ns1");
-
-
-                    
Assertion.verify(elem.lookupNamespaceURI("xsi").equals("http://www.w3.org/2001/XMLSchema-instance";),
 
-                                     "[a:elem_a].lookupNamespaceURI('xsi') == 
'http://www.w3.org/2001/XMLSchema-instance'" );
-
-                } else {
-                    Assertion.verify( 
elem.lookupPrefix("http://www.example.com";) == 
null,"lookupPrefix(http://www.example.com)==null"); 
-                }
-
-                ls = doc.getElementsByTagName("bar:leaf");
-                elem = (NodeImpl)ls.item(0);
-                Assertion.verify(elem.lookupPrefix("url1:").equals("foo"), 
-                                 "[bar:leaf].lookupPrefix('url1:', false) == 
foo");
-                //System.out.println("[bar:leaf].lookupPrefix('url1:', false) 
== "+ );
-
-                //System.out.println("==>Create b:baz with namespace 'b:' and 
xmlns:x='b:'");
-                ls = doc.getElementsByTagName("baz");
-                elem = (NodeImpl)ls.item(0);
-                ls = doc.getElementsByTagName("elem8");
-                elem = (NodeImpl)ls.item(0);
-                Element e1 = doc.createElementNS("b:","p:baz");
-                e1.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:x", 
"b:");
-                elem.appendChild(e1);
-
-
-                
Assertion.verify(((NodeImpl)e1).lookupPrefix("b:").equals("p"), 
-                                 "[p:baz].lookupPrefix('b:', false) == p");
-
-
-
-                //System.out.println("[p:baz].lookupPrefix('b:', false) == "+ 
((NodeImpl)e1).lookupPrefix("b:",false));
-
-                
Assertion.verify(elem.lookupNamespaceURI("xsi").equals("http://www.w3.org/2001/XMLSchema-instance";),
 
-                                 "[bar:leaf].lookupNamespaceURI('xsi') == 
'http://www.w3.org/2001/XMLSchema-instance'" );
-
-            
-            }
-
-            //************************
-            //* Test normalizeDocument()
-            //************************
-            //System.out.println("TEST #2: normalizeDocumention() - 3 errors, 
input: tests/dom/dom3/schema.xml");
-            {
-                errorCounter = 0;
-                config = builder.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                Document core = builder.parseURI("tests/dom/dom3/schema.xml");
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-                
-                errorCounter = 0;    
-                NodeList ls2 = core.getElementsByTagName("decVal");
-                Element testElem = (Element)ls2.item(0);
-                testElem.removeAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns");
-
-                ls2 = core.getElementsByTagName("v02:decVal");
-                testElem = (Element)ls2.item(0);
-                testElem.setPrefix("myPrefix");
-                Element root = core.getDocumentElement();
-
-                Element newElem = core.createElementNS(null, "decVal");
-                String data="4.5";
-                if (true) {
-                        data = "string";
-                } 
-                newElem.appendChild(core.createTextNode(data));
-                root.insertBefore(newElem, testElem);
-
-                newElem = core.createElementNS(null,  "notInSchema");
-                newElem.appendChild(core.createTextNode("added new element"));
-                root.insertBefore(newElem, testElem);
-
-                root.appendChild(core.createElementNS("UndefinedNamespace", 
"NS1:foo"));
-                config = core.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("schema-type", 
"http://www.w3.org/2001/XMLSchema";);
-                core.normalizeDocument();
-                Assertion.verify(errorCounter == 3, "3 errors should be 
reported");
-                               
-                errorCounter = 0;
-                config.setParameter("validate", Boolean.FALSE);
-                config.setParameter("comments", Boolean.FALSE);
-                core.normalizeDocument();
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-
-
-                config = builder.getDomConfig();
-                config.setParameter("validate", Boolean.FALSE);
-                
-            }
-
-
-            //************************
-            //* Test normalizeDocument()
-            //************************
-            // System.out.println("TEST #3: normalizeDocumention() + psvi, 
input: data/personal-schema.xml");
-            {
-                errorCounter = 0;
-                config = builder.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("psvi", Boolean.TRUE);
-                Document core = builder.parseURI("data/personal-schema.xml");
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-
-                NodeList ls2 = core.getElementsByTagName("person");
-
-                Element testElem = (Element)ls2.item(0);
-                
Assertion.verify(((ElementPSVI)testElem).getElementDeclaration().getName().equals("person"),
 "testElem decl");
-                Element e1 = core.createElementNS(null, "person");
-                
-                core.getDocumentElement().appendChild(e1);
-                e1.setAttributeNS(null, "id", "newEmp");
-                Element e2 = core.createElementNS(null, "name");
-                e2.appendChild(core.createElementNS(null, "family"));
-                e2.appendChild(core.createElementNS(null, "given"));
-                e1.appendChild(e2);
-                e1.appendChild(core.createElementNS(null, "email"));
-                Element e3 = core.createElementNS(null, "link");
-                e3.setAttributeNS(null, "manager", "Big.Boss");
-                e1.appendChild(e3);
-
-                testElem.removeAttributeNode(testElem.getAttributeNodeNS(null, 
"contr"));
-                NamedNodeMap map = testElem.getAttributes();
-                config = core.getDomConfig();
-                errorCounter = 0;
-                config.setParameter("psvi", Boolean.TRUE);
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("schema-type", 
"http://www.w3.org/2001/XMLSchema";);
-                core.normalizeDocument();
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-                
Assertion.verify(((ElementPSVI)e1).getElementDeclaration().getName().equals("person"),
 "e1 decl");              
-                
-                config = builder.getDomConfig();
-                config.setParameter("validate", Boolean.FALSE);
-                
-
-            }
-
-            //************************
-            //* Test normalizeDocument(): core tests
-            //************************
-            // System.out.println("TEST #4: normalizeDocument() core");
-            {
-
-                // check that namespace normalization algorithm works correctly
-                Document doc= new DocumentImpl(); 
-                Element root = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:stylesheet");
-                doc.appendChild(root);
-                root.setAttributeNS("http://attr1";, "xsl:attr1","");
-
-                Element child1 = doc.createElementNS("http://child1";, 
"NS2:child1");
-                child1.setAttributeNS("http://attr2";, "NS2:attr2","");
-                root.appendChild(child1);
-
-                Element child2 = 
doc.createElementNS("http://child2","NS4:child2";);
-                child2.setAttributeNS("http://attr3","attr3";, "");
-                root.appendChild(child2);
-
-                Element child3 = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform","xsl:child3";);
-                child3.setAttributeNS("http://a1","attr1";, "");
-                child3.setAttributeNS("http://a2","xsl:attr2";, "");
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:a1", "http://a1";);
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:xsl", "http://a2";);
-                
-                Element child4 = doc.createElementNS(null, "child4");
-                child4.setAttributeNS("http://a1";, "xsl:attr1", "");
-                child4.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns", "default");
-                child3.appendChild(child4);
-                root.appendChild(child3);
-
-                doc.normalizeDocument();
-                
-                //
-                // assertions
-                //
-
-                // xsl:stylesheet should include 2 namespace declarations
-                String name = root.getNodeName();
-                Assertion.verify(name.equals("xsl:stylesheet"), 
"xsl:stylesheet");
-
-                String value = 
root.getAttributeNS("http://www.w3.org/2000/xmlns/";, "xsl");
-                Assertion.verify(value!=null, "xmlns:xsl != null");
-                
Assertion.verify(value.equals("http://www.w3.org/1999/XSL/Transform";), 
"xmlns:xsl="+value);
-                
-                value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr1";), 
"xmlns:NS1="+value);
-
-                // child includes 2 namespace decls
-
-                Assertion.verify(child1.getNodeName().equals("NS2:child1"), 
"NS2:child1");
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS2");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://child1";), 
"xmlns:NS2="+value);
-
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr2";), 
"xmlns:NS1="+value);
-
-
-                // child3
-                
-
-                Assertion.verify(child3.getNodeName().equals("xsl:child3"), 
"xsl:child3");
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a2";), 
"xmlns:NS1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"a1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a1";), "xmlns:a1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xsl");
-                Assertion.verify(value!=null && 
-                                 
value.equals("http://www.w3.org/1999/XSL/Transform";), "xmlns:xsl="+value);
-
-                
-                Attr attr = child3.getAttributeNodeNS("http://a2";, "attr2");
-                Assertion.verify(attr != null, "NS1:attr2 !=null");
-
-                Assertion.verify(child3.getAttributes().getLength() == 5, 
"xsl:child3 has 5 attrs");
-                
-                // child 4
-                Attr temp = 
child4.getAttributeNodeNS("http://www.w3.org/2000/xmlns/";, "xmlns");
-                Assertion.verify(temp.getNodeName().equals("xmlns"), 
"attribute name is xmlns");
-                Assertion.verify(temp.getNodeValue().length() == 0, 
"xmlns=''");                
-                /*
-                OutputFormat format = new OutputFormat((Document)doc);
-                format.setLineSeparator(LineSeparator.Windows);
-                format.setIndenting(true);
-                format.setLineWidth(0);             
-                format.setPreserveSpace(true);
-                XMLSerializer serializer = new XMLSerializer(System.out, 
format);
-                serializer.serialize(doc); 
-                */               
-
-            }
-
-
-            //************************
-            //* Test normalizeDocument(): core tests
-            //************************
-            //System.out.println("TEST #4: namespace fixup during 
serialization");
-            {
-
-                Document doc= new DocumentImpl(); 
-                Element root = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:stylesheet");
-                doc.appendChild(root);
-                root.setAttributeNS("http://attr1";, "xsl:attr1","");
-
-                Element child1 = doc.createElementNS("http://child1";, 
"NS2:child1");
-                child1.setAttributeNS("http://attr2";, "NS2:attr2","");
-                root.appendChild(child1);
-
-                Element child2 = 
doc.createElementNS("http://child2","NS4:child2";);
-                child2.setAttributeNS("http://attr3","attr3";, "");
-                root.appendChild(child2);
-
-                Element child3 = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform","xsl:child3";);
-                child3.setAttributeNS("http://a1","attr1";, "");
-                child3.setAttributeNS("http://a2","xsl:attr2";, "");
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:a1", "http://a1";);
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:xsl", "http://a2";);
-                
-                Element child4 = doc.createElementNS(null, "child4");
-                child4.setAttributeNS("http://a1";, "xsl:attr1", "");
-                child4.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns", "default");
-
-                child3.appendChild(child4);
-                root.appendChild(child3);
-
-
-                // serialize data
-                writer.getDomConfig().setParameter("namespaces", Boolean.TRUE);
-                String xmlData = writer.writeToString(doc);
-                Reader r = new StringReader(xmlData);
-                LSInput in = impl.createLSInput();
-                in.setCharacterStream(r);
-                doc = builder.parse(in);
-
-                //
-                // make sure algorithm works correctly
-                //
-
-                root = doc.getDocumentElement();
-                child1 = (Element)root.getFirstChild();
-                child2 = (Element)child1.getNextSibling();
-                child3 = (Element)child2.getNextSibling();
-
-
-                // xsl:stylesheet should include 2 namespace declarations
-                String name = root.getNodeName();
-                Assertion.verify(name.equals("xsl:stylesheet"), 
"xsl:stylesheet");
-
-                String value = 
root.getAttributeNS("http://www.w3.org/2000/xmlns/";, "xsl");
-                Assertion.verify(value!=null, "xmlns:xsl != null");
-                
Assertion.verify(value.equals("http://www.w3.org/1999/XSL/Transform";), 
"xmlns:xsl="+value);
-                
-                value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr1";), 
"xmlns:NS1="+value);
-
-                // child includes 2 namespace decls
-
-                Assertion.verify(child1.getNodeName().equals("NS2:child1"), 
"NS2:child1");
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS2");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://child1";), 
"xmlns:NS2="+value);
-
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr2";), 
"xmlns:NS1="+value);
-
-
-                // child3
-                
-
-                Assertion.verify(child3.getNodeName().equals("xsl:child3"), 
"xsl:child3");
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a2";), 
"xmlns:NS1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"a1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a1";), "xmlns:a1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xsl");
-                Assertion.verify(value!=null && 
-                                 
value.equals("http://www.w3.org/1999/XSL/Transform";), "xmlns:xsl="+value);
-
-                
-                Attr attr = child3.getAttributeNodeNS("http://a2";, "attr2");
-                Assertion.verify(attr != null, "NS6:attr2 !=null");
+public class Test extends TestCase implements DOMErrorHandler, 
LSResourceResolver {
+
+    private int errorCounter;
+    private DOMImplementationLS impl;
+    private LSParser builder;
+    private LSSerializer writer;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        System.setProperty(DOMImplementationRegistry.PROPERTY,
+            "org.apache.xerces.dom.DOMImplementationSourceImpl 
org.apache.xerces.dom.DOMXSImplementationSourceImpl");
+        impl = (DOMImplementationLS) 
DOMImplementationRegistry.newInstance().getDOMImplementation("LS");
+        assertNotNull("domImplementation != null", impl);
+        builder = impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, 
null);
+        writer = impl.createLSSerializer();
+        errorCounter = 0;
+    }
 
-                Assertion.verify(child3.getAttributes().getLength() == 5, 
"xsl:child3 has 5 attrs");
+    public void testPrefixLookup() throws Exception {
+        boolean namespaces = true;
+        LSParser parser = 
impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null);
+        Document doc = parser.parseURI("tests/dom/dom3/input.xml");
+        NodeList ls = doc.getElementsByTagName("a:elem_a");
+
+        NodeImpl elem = (NodeImpl) ls.item(0);
+        assertNotNull("[a:elem_a] lookupPrefix result", 
elem.lookupPrefix("http://www.example.com";));
+        assertEquals("[a:elem_a].lookupPrefix(http://www.example.com)", "ns1", 
elem.lookupPrefix("http://www.example.com";));
+        assertTrue("[a:elem_a].isDefaultNamespace(http://www.example.com)", 
elem.isDefaultNamespace("http://www.example.com";));
+        assertEquals("[a:elem_a].lookupNamespaceURI('xsi')",
+                "http://www.w3.org/2001/XMLSchema-instance";, 
elem.lookupNamespaceURI("xsi"));
+
+        ls = doc.getElementsByTagName("bar:leaf");
+        elem = (NodeImpl) ls.item(0);
+        assertEquals("[bar:leaf].lookupPrefix('url1:')", "foo", 
elem.lookupPrefix("url1:"));
+
+        ls = doc.getElementsByTagName("elem8");
+        elem = (NodeImpl) ls.item(0);
+        Element e1 = doc.createElementNS("b:", "p:baz");
+        e1.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:x", "b:");
+        elem.appendChild(e1);
+
+        assertEquals("[p:baz].lookupPrefix('b:')", "p", ((NodeImpl) 
e1).lookupPrefix("b:"));
+        assertEquals("[bar:leaf].lookupNamespaceURI('xsi')",
+                "http://www.w3.org/2001/XMLSchema-instance";, 
elem.lookupNamespaceURI("xsi"));
+    }
 
+    public void testNormalizeDocument() throws Exception {
+        DOMConfiguration config = builder.getDomConfig();
+        config.setParameter("error-handler", this);
+        config.setParameter("validate", Boolean.TRUE);
+        Document core = builder.parseURI("tests/dom/dom3/schema.xml");
+        assertEquals("No errors should be reported on initial parse", 0, 
errorCounter);
+
+        errorCounter = 0;
+        NodeList ls2 = core.getElementsByTagName("decVal");
+        Element testElem = (Element) ls2.item(0);
+        testElem.removeAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns");
+
+        ls2 = core.getElementsByTagName("v02:decVal");
+        testElem = (Element) ls2.item(0);
+        testElem.setPrefix("myPrefix");
+        Element root = core.getDocumentElement();
+
+        Element newElem = core.createElementNS(null, "decVal");
+        newElem.appendChild(core.createTextNode("string"));
+        root.insertBefore(newElem, testElem);
+
+        newElem = core.createElementNS(null, "notInSchema");
+        newElem.appendChild(core.createTextNode("added new element"));
+        root.insertBefore(newElem, testElem);
+
+        root.appendChild(core.createElementNS("UndefinedNamespace", 
"NS1:foo"));
+        config = core.getDomConfig();
+        config.setParameter("error-handler", this);
+        config.setParameter("validate", Boolean.TRUE);
+        config.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema";);
+        core.normalizeDocument();
+        assertEquals("3 errors should be reported after normalize", 3, 
errorCounter);
+
+        errorCounter = 0;
+        config.setParameter("validate", Boolean.FALSE);
+        config.setParameter("comments", Boolean.FALSE);
+        core.normalizeDocument();
+        assertEquals("No errors should be reported after normalize with 
validate=false", 0, errorCounter);
+    }
 
-                
-                //OutputFormat format = new OutputFormat((Document)doc);
-                //format.setLineSeparator(LineSeparator.Windows);
-                //format.setIndenting(true);
-                //format.setLineWidth(0);             
-                //format.setPreserveSpace(true);
+    public void testNormalizeDocumentPSVI() throws Exception {
+        DOMConfiguration config = builder.getDomConfig();
+        config.setParameter("error-handler", this);
+        config.setParameter("validate", Boolean.TRUE);
+        config.setParameter("psvi", Boolean.TRUE);
+        Document core = builder.parseURI("data/personal-schema.xml");
+        assertEquals("No errors should be reported on initial parse", 0, 
errorCounter);
+
+        NodeList ls2 = core.getElementsByTagName("person");
+        Element testElem = (Element) ls2.item(0);
+        assertEquals("person", ((ElementPSVI) 
testElem).getElementDeclaration().getName());
+
+        Element e1 = core.createElementNS(null, "person");
+        core.getDocumentElement().appendChild(e1);
+        e1.setAttributeNS(null, "id", "newEmp");
+        Element e2 = core.createElementNS(null, "name");
+        e2.appendChild(core.createElementNS(null, "family"));
+        e2.appendChild(core.createElementNS(null, "given"));
+        e1.appendChild(e2);
+        e1.appendChild(core.createElementNS(null, "email"));
+        Element e3 = core.createElementNS(null, "link");
+        e3.setAttributeNS(null, "manager", "Big.Boss");
+        e1.appendChild(e3);
+
+        testElem.removeAttributeNode(testElem.getAttributeNodeNS(null, 
"contr"));
+        config = core.getDomConfig();
+        errorCounter = 0;
+        config.setParameter("psvi", Boolean.TRUE);
+        config.setParameter("error-handler", this);
+        config.setParameter("validate", Boolean.TRUE);
+        config.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema";);
+        core.normalizeDocument();
+        assertEquals("No errors should be reported after normalize", 0, 
errorCounter);
+        assertEquals("person", ((ElementPSVI) 
e1).getElementDeclaration().getName());
+    }
 
-                //XMLSerializer serializer = new XMLSerializer(System.out, 
format);
-                //serializer.serialize(doc);                
+    public void testNormalizeDocumentCore() throws Exception {
+        Document doc = new DocumentImpl();
+        Element root = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:stylesheet");
+        doc.appendChild(root);
+        root.setAttributeNS("http://attr1";, "xsl:attr1", "");
+
+        Element child1 = doc.createElementNS("http://child1";, "NS2:child1");
+        child1.setAttributeNS("http://attr2";, "NS2:attr2", "");
+        root.appendChild(child1);
+
+        Element child2 = doc.createElementNS("http://child2";, "NS4:child2");
+        child2.setAttributeNS("http://attr3";, "attr3", "");
+        root.appendChild(child2);
+
+        Element child3 = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:child3");
+        child3.setAttributeNS("http://a1";, "attr1", "");
+        child3.setAttributeNS("http://a2";, "xsl:attr2", "");
+        child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:a1", 
"http://a1";);
+        child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:xsl", 
"http://a2";);
+
+        Element child4 = doc.createElementNS(null, "child4");
+        child4.setAttributeNS("http://a1";, "xsl:attr1", "");
+        child4.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns", 
"default");
+        child3.appendChild(child4);
+        root.appendChild(child3);
+
+        doc.normalizeDocument();
+
+        assertEquals("xsl:stylesheet", root.getNodeName());
+        String value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xsl");
+        assertNotNull("xmlns:xsl != null", value);
+        assertEquals("xmlns:xsl", "http://www.w3.org/1999/XSL/Transform";, 
value);
+
+        value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS1");
+        assertTrue("xmlns:NS1=" + value, value != null && 
value.equals("http://attr1";));
+
+        assertEquals("NS2:child1", child1.getNodeName());
+        value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS2");
+        assertTrue("xmlns:NS2=" + value, value != null && 
value.equals("http://child1";));

Review Comment:
   in these and similar tests below it's enough to use assertEquals; you don't 
need to check for null
   
   e.g.
   
   
   assertEquals("http://child1";, value);
   
   



##########
tests/dom/dom3/Test.java:
##########
@@ -43,643 +44,375 @@
 import org.w3c.dom.ls.LSResourceResolver;
 import org.w3c.dom.ls.LSSerializer;
 
-import dom.util.Assertion;
-
-/**
- * The program tests vacarious DOM Level 3 functionality
- * 
- * @version $Id$
- */
-public class Test implements DOMErrorHandler, LSResourceResolver {
-    
-    static int errorCounter = 0;
-    static DOMErrorHandler errorHandler = new Test();
-    static LSResourceResolver resolver = new Test();
-    
-    public static void main( String[] argv) {
-        try {
-            boolean namespaces = true;
-            System.out.println("Running dom.dom3.Test...");
-            
System.setProperty(DOMImplementationRegistry.PROPERTY,"org.apache.xerces.dom.DOMImplementationSourceImpl
 org.apache.xerces.dom.DOMXSImplementationSourceImpl");
-
-            
-            DOMImplementationLS impl = 
(DOMImplementationLS)DOMImplementationRegistry.newInstance().getDOMImplementation("LS");
-
-            Assertion.verify(impl!=null, "domImplementation != null");
-
-            LSParser builder = 
impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS,
-                                                       null);
-
-            LSSerializer writer = impl.createLSSerializer();
-            DOMConfiguration config = writer.getDomConfig();
-            
config.setParameter("namespaces",(namespaces)?Boolean.TRUE:Boolean.FALSE);
-            config.setParameter("validate",Boolean.FALSE);
-            
-            //----------------------------
-            // TEST: lookupPrefix
-            //       isDefaultNamespace
-            //       lookupNamespaceURI
-            //----------------------------
-            //System.out.println("TEST #1: lookupPrefix, isDefaultNamespace, 
lookupNamespaceURI, input: tests/dom/dom3/input.xml");
-            {
-
-                Document doc = builder.parseURI("tests/dom/dom3/input.xml");
-                NodeList ls = doc.getElementsByTagName("a:elem_a"); 
-
-                NodeImpl elem = (NodeImpl)ls.item(0);
-                if (namespaces) {
-                    
//System.out.println("[a:elem_a].lookupPrefix('http://www.example.com', true) 
== null");
-                    
Assertion.verify(elem.lookupPrefix("http://www.example.com";).equals("ns1"), 
-                                     
"[a:elem_a].lookupPrefix(http://www.example.com)==null");
-
-
-                    
//System.out.println("[a:elem_a].isDefaultNamespace('http://www.example.com') 
== true");
-                    
Assertion.verify(elem.isDefaultNamespace("http://www.example.com";) == true, 
-                                     
"[a:elem_a].isDefaultNamespace(http://www.example.com)==true");
-
-
-                    
//System.out.println("[a:elem_a].lookupPrefix('http://www.example.com', false) 
== ns1");
-                    
Assertion.verify(elem.lookupPrefix("http://www.example.com";).equals("ns1"), 
-                                     
"[a:elem_a].lookupPrefix(http://www.example.com)==ns1");
-
-
-                    
Assertion.verify(elem.lookupNamespaceURI("xsi").equals("http://www.w3.org/2001/XMLSchema-instance";),
 
-                                     "[a:elem_a].lookupNamespaceURI('xsi') == 
'http://www.w3.org/2001/XMLSchema-instance'" );
-
-                } else {
-                    Assertion.verify( 
elem.lookupPrefix("http://www.example.com";) == 
null,"lookupPrefix(http://www.example.com)==null"); 
-                }
-
-                ls = doc.getElementsByTagName("bar:leaf");
-                elem = (NodeImpl)ls.item(0);
-                Assertion.verify(elem.lookupPrefix("url1:").equals("foo"), 
-                                 "[bar:leaf].lookupPrefix('url1:', false) == 
foo");
-                //System.out.println("[bar:leaf].lookupPrefix('url1:', false) 
== "+ );
-
-                //System.out.println("==>Create b:baz with namespace 'b:' and 
xmlns:x='b:'");
-                ls = doc.getElementsByTagName("baz");
-                elem = (NodeImpl)ls.item(0);
-                ls = doc.getElementsByTagName("elem8");
-                elem = (NodeImpl)ls.item(0);
-                Element e1 = doc.createElementNS("b:","p:baz");
-                e1.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:x", 
"b:");
-                elem.appendChild(e1);
-
-
-                
Assertion.verify(((NodeImpl)e1).lookupPrefix("b:").equals("p"), 
-                                 "[p:baz].lookupPrefix('b:', false) == p");
-
-
-
-                //System.out.println("[p:baz].lookupPrefix('b:', false) == "+ 
((NodeImpl)e1).lookupPrefix("b:",false));
-
-                
Assertion.verify(elem.lookupNamespaceURI("xsi").equals("http://www.w3.org/2001/XMLSchema-instance";),
 
-                                 "[bar:leaf].lookupNamespaceURI('xsi') == 
'http://www.w3.org/2001/XMLSchema-instance'" );
-
-            
-            }
-
-            //************************
-            //* Test normalizeDocument()
-            //************************
-            //System.out.println("TEST #2: normalizeDocumention() - 3 errors, 
input: tests/dom/dom3/schema.xml");
-            {
-                errorCounter = 0;
-                config = builder.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                Document core = builder.parseURI("tests/dom/dom3/schema.xml");
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-                
-                errorCounter = 0;    
-                NodeList ls2 = core.getElementsByTagName("decVal");
-                Element testElem = (Element)ls2.item(0);
-                testElem.removeAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns");
-
-                ls2 = core.getElementsByTagName("v02:decVal");
-                testElem = (Element)ls2.item(0);
-                testElem.setPrefix("myPrefix");
-                Element root = core.getDocumentElement();
-
-                Element newElem = core.createElementNS(null, "decVal");
-                String data="4.5";
-                if (true) {
-                        data = "string";
-                } 
-                newElem.appendChild(core.createTextNode(data));
-                root.insertBefore(newElem, testElem);
-
-                newElem = core.createElementNS(null,  "notInSchema");
-                newElem.appendChild(core.createTextNode("added new element"));
-                root.insertBefore(newElem, testElem);
-
-                root.appendChild(core.createElementNS("UndefinedNamespace", 
"NS1:foo"));
-                config = core.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("schema-type", 
"http://www.w3.org/2001/XMLSchema";);
-                core.normalizeDocument();
-                Assertion.verify(errorCounter == 3, "3 errors should be 
reported");
-                               
-                errorCounter = 0;
-                config.setParameter("validate", Boolean.FALSE);
-                config.setParameter("comments", Boolean.FALSE);
-                core.normalizeDocument();
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-
-
-                config = builder.getDomConfig();
-                config.setParameter("validate", Boolean.FALSE);
-                
-            }
-
-
-            //************************
-            //* Test normalizeDocument()
-            //************************
-            // System.out.println("TEST #3: normalizeDocumention() + psvi, 
input: data/personal-schema.xml");
-            {
-                errorCounter = 0;
-                config = builder.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("psvi", Boolean.TRUE);
-                Document core = builder.parseURI("data/personal-schema.xml");
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-
-                NodeList ls2 = core.getElementsByTagName("person");
-
-                Element testElem = (Element)ls2.item(0);
-                
Assertion.verify(((ElementPSVI)testElem).getElementDeclaration().getName().equals("person"),
 "testElem decl");
-                Element e1 = core.createElementNS(null, "person");
-                
-                core.getDocumentElement().appendChild(e1);
-                e1.setAttributeNS(null, "id", "newEmp");
-                Element e2 = core.createElementNS(null, "name");
-                e2.appendChild(core.createElementNS(null, "family"));
-                e2.appendChild(core.createElementNS(null, "given"));
-                e1.appendChild(e2);
-                e1.appendChild(core.createElementNS(null, "email"));
-                Element e3 = core.createElementNS(null, "link");
-                e3.setAttributeNS(null, "manager", "Big.Boss");
-                e1.appendChild(e3);
-
-                testElem.removeAttributeNode(testElem.getAttributeNodeNS(null, 
"contr"));
-                NamedNodeMap map = testElem.getAttributes();
-                config = core.getDomConfig();
-                errorCounter = 0;
-                config.setParameter("psvi", Boolean.TRUE);
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("schema-type", 
"http://www.w3.org/2001/XMLSchema";);
-                core.normalizeDocument();
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-                
Assertion.verify(((ElementPSVI)e1).getElementDeclaration().getName().equals("person"),
 "e1 decl");              
-                
-                config = builder.getDomConfig();
-                config.setParameter("validate", Boolean.FALSE);
-                
-
-            }
-
-            //************************
-            //* Test normalizeDocument(): core tests
-            //************************
-            // System.out.println("TEST #4: normalizeDocument() core");
-            {
-
-                // check that namespace normalization algorithm works correctly
-                Document doc= new DocumentImpl(); 
-                Element root = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:stylesheet");
-                doc.appendChild(root);
-                root.setAttributeNS("http://attr1";, "xsl:attr1","");
-
-                Element child1 = doc.createElementNS("http://child1";, 
"NS2:child1");
-                child1.setAttributeNS("http://attr2";, "NS2:attr2","");
-                root.appendChild(child1);
-
-                Element child2 = 
doc.createElementNS("http://child2","NS4:child2";);
-                child2.setAttributeNS("http://attr3","attr3";, "");
-                root.appendChild(child2);
-
-                Element child3 = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform","xsl:child3";);
-                child3.setAttributeNS("http://a1","attr1";, "");
-                child3.setAttributeNS("http://a2","xsl:attr2";, "");
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:a1", "http://a1";);
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:xsl", "http://a2";);
-                
-                Element child4 = doc.createElementNS(null, "child4");
-                child4.setAttributeNS("http://a1";, "xsl:attr1", "");
-                child4.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns", "default");
-                child3.appendChild(child4);
-                root.appendChild(child3);
-
-                doc.normalizeDocument();
-                
-                //
-                // assertions
-                //
-
-                // xsl:stylesheet should include 2 namespace declarations
-                String name = root.getNodeName();
-                Assertion.verify(name.equals("xsl:stylesheet"), 
"xsl:stylesheet");
-
-                String value = 
root.getAttributeNS("http://www.w3.org/2000/xmlns/";, "xsl");
-                Assertion.verify(value!=null, "xmlns:xsl != null");
-                
Assertion.verify(value.equals("http://www.w3.org/1999/XSL/Transform";), 
"xmlns:xsl="+value);
-                
-                value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr1";), 
"xmlns:NS1="+value);
-
-                // child includes 2 namespace decls
-
-                Assertion.verify(child1.getNodeName().equals("NS2:child1"), 
"NS2:child1");
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS2");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://child1";), 
"xmlns:NS2="+value);
-
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr2";), 
"xmlns:NS1="+value);
-
-
-                // child3
-                
-
-                Assertion.verify(child3.getNodeName().equals("xsl:child3"), 
"xsl:child3");
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a2";), 
"xmlns:NS1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"a1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a1";), "xmlns:a1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xsl");
-                Assertion.verify(value!=null && 
-                                 
value.equals("http://www.w3.org/1999/XSL/Transform";), "xmlns:xsl="+value);
-
-                
-                Attr attr = child3.getAttributeNodeNS("http://a2";, "attr2");
-                Assertion.verify(attr != null, "NS1:attr2 !=null");
-
-                Assertion.verify(child3.getAttributes().getLength() == 5, 
"xsl:child3 has 5 attrs");
-                
-                // child 4
-                Attr temp = 
child4.getAttributeNodeNS("http://www.w3.org/2000/xmlns/";, "xmlns");
-                Assertion.verify(temp.getNodeName().equals("xmlns"), 
"attribute name is xmlns");
-                Assertion.verify(temp.getNodeValue().length() == 0, 
"xmlns=''");                
-                /*
-                OutputFormat format = new OutputFormat((Document)doc);
-                format.setLineSeparator(LineSeparator.Windows);
-                format.setIndenting(true);
-                format.setLineWidth(0);             
-                format.setPreserveSpace(true);
-                XMLSerializer serializer = new XMLSerializer(System.out, 
format);
-                serializer.serialize(doc); 
-                */               
-
-            }
-
-
-            //************************
-            //* Test normalizeDocument(): core tests
-            //************************
-            //System.out.println("TEST #4: namespace fixup during 
serialization");
-            {
-
-                Document doc= new DocumentImpl(); 
-                Element root = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:stylesheet");
-                doc.appendChild(root);
-                root.setAttributeNS("http://attr1";, "xsl:attr1","");
-
-                Element child1 = doc.createElementNS("http://child1";, 
"NS2:child1");
-                child1.setAttributeNS("http://attr2";, "NS2:attr2","");
-                root.appendChild(child1);
-
-                Element child2 = 
doc.createElementNS("http://child2","NS4:child2";);
-                child2.setAttributeNS("http://attr3","attr3";, "");
-                root.appendChild(child2);
-
-                Element child3 = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform","xsl:child3";);
-                child3.setAttributeNS("http://a1","attr1";, "");
-                child3.setAttributeNS("http://a2","xsl:attr2";, "");
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:a1", "http://a1";);
-                child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:xsl", "http://a2";);
-                
-                Element child4 = doc.createElementNS(null, "child4");
-                child4.setAttributeNS("http://a1";, "xsl:attr1", "");
-                child4.setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns", "default");
-
-                child3.appendChild(child4);
-                root.appendChild(child3);
-
-
-                // serialize data
-                writer.getDomConfig().setParameter("namespaces", Boolean.TRUE);
-                String xmlData = writer.writeToString(doc);
-                Reader r = new StringReader(xmlData);
-                LSInput in = impl.createLSInput();
-                in.setCharacterStream(r);
-                doc = builder.parse(in);
-
-                //
-                // make sure algorithm works correctly
-                //
-
-                root = doc.getDocumentElement();
-                child1 = (Element)root.getFirstChild();
-                child2 = (Element)child1.getNextSibling();
-                child3 = (Element)child2.getNextSibling();
-
-
-                // xsl:stylesheet should include 2 namespace declarations
-                String name = root.getNodeName();
-                Assertion.verify(name.equals("xsl:stylesheet"), 
"xsl:stylesheet");
-
-                String value = 
root.getAttributeNS("http://www.w3.org/2000/xmlns/";, "xsl");
-                Assertion.verify(value!=null, "xmlns:xsl != null");
-                
Assertion.verify(value.equals("http://www.w3.org/1999/XSL/Transform";), 
"xmlns:xsl="+value);
-                
-                value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr1";), 
"xmlns:NS1="+value);
-
-                // child includes 2 namespace decls
-
-                Assertion.verify(child1.getNodeName().equals("NS2:child1"), 
"NS2:child1");
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS2");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://child1";), 
"xmlns:NS2="+value);
-
-                value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://attr2";), 
"xmlns:NS1="+value);
-
-
-                // child3
-                
-
-                Assertion.verify(child3.getNodeName().equals("xsl:child3"), 
"xsl:child3");
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"NS1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a2";), 
"xmlns:NS1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"a1");
-                Assertion.verify(value!=null && 
-                                 value.equals("http://a1";), "xmlns:a1="+value);
-
-
-                value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xsl");
-                Assertion.verify(value!=null && 
-                                 
value.equals("http://www.w3.org/1999/XSL/Transform";), "xmlns:xsl="+value);
-
-                
-                Attr attr = child3.getAttributeNodeNS("http://a2";, "attr2");
-                Assertion.verify(attr != null, "NS6:attr2 !=null");
+public class Test extends TestCase implements DOMErrorHandler, 
LSResourceResolver {
+
+    private int errorCounter;
+    private DOMImplementationLS impl;
+    private LSParser builder;
+    private LSSerializer writer;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        System.setProperty(DOMImplementationRegistry.PROPERTY,
+            "org.apache.xerces.dom.DOMImplementationSourceImpl 
org.apache.xerces.dom.DOMXSImplementationSourceImpl");
+        impl = (DOMImplementationLS) 
DOMImplementationRegistry.newInstance().getDOMImplementation("LS");
+        assertNotNull("domImplementation != null", impl);
+        builder = impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, 
null);
+        writer = impl.createLSSerializer();
+        errorCounter = 0;
+    }
 
-                Assertion.verify(child3.getAttributes().getLength() == 5, 
"xsl:child3 has 5 attrs");
+    public void testPrefixLookup() throws Exception {
+        boolean namespaces = true;
+        LSParser parser = 
impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null);
+        Document doc = parser.parseURI("tests/dom/dom3/input.xml");
+        NodeList ls = doc.getElementsByTagName("a:elem_a");
+
+        NodeImpl elem = (NodeImpl) ls.item(0);
+        assertNotNull("[a:elem_a] lookupPrefix result", 
elem.lookupPrefix("http://www.example.com";));
+        assertEquals("[a:elem_a].lookupPrefix(http://www.example.com)", "ns1", 
elem.lookupPrefix("http://www.example.com";));
+        assertTrue("[a:elem_a].isDefaultNamespace(http://www.example.com)", 
elem.isDefaultNamespace("http://www.example.com";));
+        assertEquals("[a:elem_a].lookupNamespaceURI('xsi')",
+                "http://www.w3.org/2001/XMLSchema-instance";, 
elem.lookupNamespaceURI("xsi"));
+
+        ls = doc.getElementsByTagName("bar:leaf");
+        elem = (NodeImpl) ls.item(0);
+        assertEquals("[bar:leaf].lookupPrefix('url1:')", "foo", 
elem.lookupPrefix("url1:"));
+
+        ls = doc.getElementsByTagName("elem8");
+        elem = (NodeImpl) ls.item(0);
+        Element e1 = doc.createElementNS("b:", "p:baz");
+        e1.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:x", "b:");
+        elem.appendChild(e1);
+
+        assertEquals("[p:baz].lookupPrefix('b:')", "p", ((NodeImpl) 
e1).lookupPrefix("b:"));
+        assertEquals("[bar:leaf].lookupNamespaceURI('xsi')",
+                "http://www.w3.org/2001/XMLSchema-instance";, 
elem.lookupNamespaceURI("xsi"));
+    }
 
+    public void testNormalizeDocument() throws Exception {
+        DOMConfiguration config = builder.getDomConfig();
+        config.setParameter("error-handler", this);
+        config.setParameter("validate", Boolean.TRUE);
+        Document core = builder.parseURI("tests/dom/dom3/schema.xml");
+        assertEquals("No errors should be reported on initial parse", 0, 
errorCounter);
+
+        errorCounter = 0;
+        NodeList ls2 = core.getElementsByTagName("decVal");
+        Element testElem = (Element) ls2.item(0);
+        testElem.removeAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns");
+
+        ls2 = core.getElementsByTagName("v02:decVal");
+        testElem = (Element) ls2.item(0);
+        testElem.setPrefix("myPrefix");
+        Element root = core.getDocumentElement();
+
+        Element newElem = core.createElementNS(null, "decVal");
+        newElem.appendChild(core.createTextNode("string"));
+        root.insertBefore(newElem, testElem);
+
+        newElem = core.createElementNS(null, "notInSchema");
+        newElem.appendChild(core.createTextNode("added new element"));
+        root.insertBefore(newElem, testElem);
+
+        root.appendChild(core.createElementNS("UndefinedNamespace", 
"NS1:foo"));
+        config = core.getDomConfig();
+        config.setParameter("error-handler", this);
+        config.setParameter("validate", Boolean.TRUE);
+        config.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema";);
+        core.normalizeDocument();
+        assertEquals("3 errors should be reported after normalize", 3, 
errorCounter);
+
+        errorCounter = 0;
+        config.setParameter("validate", Boolean.FALSE);
+        config.setParameter("comments", Boolean.FALSE);
+        core.normalizeDocument();
+        assertEquals("No errors should be reported after normalize with 
validate=false", 0, errorCounter);
+    }
 
-                
-                //OutputFormat format = new OutputFormat((Document)doc);
-                //format.setLineSeparator(LineSeparator.Windows);
-                //format.setIndenting(true);
-                //format.setLineWidth(0);             
-                //format.setPreserveSpace(true);
+    public void testNormalizeDocumentPSVI() throws Exception {
+        DOMConfiguration config = builder.getDomConfig();
+        config.setParameter("error-handler", this);
+        config.setParameter("validate", Boolean.TRUE);
+        config.setParameter("psvi", Boolean.TRUE);
+        Document core = builder.parseURI("data/personal-schema.xml");
+        assertEquals("No errors should be reported on initial parse", 0, 
errorCounter);
+
+        NodeList ls2 = core.getElementsByTagName("person");
+        Element testElem = (Element) ls2.item(0);
+        assertEquals("person", ((ElementPSVI) 
testElem).getElementDeclaration().getName());
+
+        Element e1 = core.createElementNS(null, "person");
+        core.getDocumentElement().appendChild(e1);
+        e1.setAttributeNS(null, "id", "newEmp");
+        Element e2 = core.createElementNS(null, "name");
+        e2.appendChild(core.createElementNS(null, "family"));
+        e2.appendChild(core.createElementNS(null, "given"));
+        e1.appendChild(e2);
+        e1.appendChild(core.createElementNS(null, "email"));
+        Element e3 = core.createElementNS(null, "link");
+        e3.setAttributeNS(null, "manager", "Big.Boss");
+        e1.appendChild(e3);
+
+        testElem.removeAttributeNode(testElem.getAttributeNodeNS(null, 
"contr"));
+        config = core.getDomConfig();
+        errorCounter = 0;
+        config.setParameter("psvi", Boolean.TRUE);
+        config.setParameter("error-handler", this);
+        config.setParameter("validate", Boolean.TRUE);
+        config.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema";);
+        core.normalizeDocument();
+        assertEquals("No errors should be reported after normalize", 0, 
errorCounter);
+        assertEquals("person", ((ElementPSVI) 
e1).getElementDeclaration().getName());
+    }
 
-                //XMLSerializer serializer = new XMLSerializer(System.out, 
format);
-                //serializer.serialize(doc);                
+    public void testNormalizeDocumentCore() throws Exception {
+        Document doc = new DocumentImpl();
+        Element root = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:stylesheet");
+        doc.appendChild(root);
+        root.setAttributeNS("http://attr1";, "xsl:attr1", "");
+
+        Element child1 = doc.createElementNS("http://child1";, "NS2:child1");
+        child1.setAttributeNS("http://attr2";, "NS2:attr2", "");
+        root.appendChild(child1);
+
+        Element child2 = doc.createElementNS("http://child2";, "NS4:child2");
+        child2.setAttributeNS("http://attr3";, "attr3", "");
+        root.appendChild(child2);
+
+        Element child3 = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:child3");
+        child3.setAttributeNS("http://a1";, "attr1", "");
+        child3.setAttributeNS("http://a2";, "xsl:attr2", "");
+        child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:a1", 
"http://a1";);
+        child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:xsl", 
"http://a2";);
+
+        Element child4 = doc.createElementNS(null, "child4");
+        child4.setAttributeNS("http://a1";, "xsl:attr1", "");
+        child4.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns", 
"default");
+        child3.appendChild(child4);
+        root.appendChild(child3);
+
+        doc.normalizeDocument();
+
+        assertEquals("xsl:stylesheet", root.getNodeName());
+        String value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xsl");
+        assertNotNull("xmlns:xsl != null", value);
+        assertEquals("xmlns:xsl", "http://www.w3.org/1999/XSL/Transform";, 
value);
+
+        value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS1");
+        assertTrue("xmlns:NS1=" + value, value != null && 
value.equals("http://attr1";));
+
+        assertEquals("NS2:child1", child1.getNodeName());
+        value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS2");
+        assertTrue("xmlns:NS2=" + value, value != null && 
value.equals("http://child1";));
+        value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS1");
+        assertTrue("xmlns:NS1=" + value, value != null && 
value.equals("http://attr2";));
+
+        assertEquals("xsl:child3", child3.getNodeName());
+        value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS1");
+        assertTrue("xmlns:NS1=" + value, value != null && 
value.equals("http://a2";));
+        value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, "a1");
+        assertTrue("xmlns:a1=" + value, value != null && 
value.equals("http://a1";));
+        value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, "xsl");
+        assertTrue("xmlns:xsl=" + value, value != null && 
value.equals("http://www.w3.org/1999/XSL/Transform";));
+
+        Attr attr = child3.getAttributeNodeNS("http://a2";, "attr2");
+        assertNotNull("NS1:attr2 !=null", attr);
+        assertEquals("xsl:child3 has 5 attrs", 5, 
child3.getAttributes().getLength());
+
+        Attr temp = child4.getAttributeNodeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns");
+        assertEquals("attribute name is xmlns", "xmlns", temp.getNodeName());
+        assertEquals("xmlns=''", 0, temp.getNodeValue().length());
+    }
 
-            }
+    public void testNamespaceFixupSerialization() throws Exception {
+        Document doc = new DocumentImpl();
+        Element root = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:stylesheet");
+        doc.appendChild(root);
+        root.setAttributeNS("http://attr1";, "xsl:attr1", "");
+
+        Element child1 = doc.createElementNS("http://child1";, "NS2:child1");
+        child1.setAttributeNS("http://attr2";, "NS2:attr2", "");
+        root.appendChild(child1);
+
+        Element child2 = doc.createElementNS("http://child2";, "NS4:child2");
+        child2.setAttributeNS("http://attr3";, "attr3", "");
+        root.appendChild(child2);
+
+        Element child3 = 
doc.createElementNS("http://www.w3.org/1999/XSL/Transform";, "xsl:child3");
+        child3.setAttributeNS("http://a1";, "attr1", "");
+        child3.setAttributeNS("http://a2";, "xsl:attr2", "");
+        child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:a1", 
"http://a1";);
+        child3.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns:xsl", 
"http://a2";);
+
+        Element child4 = doc.createElementNS(null, "child4");
+        child4.setAttributeNS("http://a1";, "xsl:attr1", "");
+        child4.setAttributeNS("http://www.w3.org/2000/xmlns/";, "xmlns", 
"default");
+        child3.appendChild(child4);
+        root.appendChild(child3);
+
+        LSSerializer serializer = impl.createLSSerializer();
+        serializer.getDomConfig().setParameter("namespaces", Boolean.TRUE);
+        String xmlData = serializer.writeToString(doc);
+        Reader r = new StringReader(xmlData);
+        LSInput in = impl.createLSInput();
+        in.setCharacterStream(r);
+        doc = builder.parse(in);
+
+        root = doc.getDocumentElement();
+        child1 = (Element) root.getFirstChild();
+        child2 = (Element) child1.getNextSibling();
+        child3 = (Element) child2.getNextSibling();
+
+        assertEquals("xsl:stylesheet", root.getNodeName());
+        String value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xsl");
+        assertNotNull("xmlns:xsl != null", value);
+        assertEquals("xmlns:xsl", "http://www.w3.org/1999/XSL/Transform";, 
value);
+
+        value = root.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS1");
+        assertTrue("xmlns:NS1=" + value, value != null && 
value.equals("http://attr1";));
+
+        assertEquals("NS2:child1", child1.getNodeName());
+        value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS2");
+        assertTrue("xmlns:NS2=" + value, value != null && 
value.equals("http://child1";));
+        value = child1.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS1");
+        assertTrue("xmlns:NS1=" + value, value != null && 
value.equals("http://attr2";));
+
+        assertEquals("xsl:child3", child3.getNodeName());
+        value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, "NS1");
+        assertTrue("xmlns:NS1=" + value, value != null && 
value.equals("http://a2";));
+        value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, "a1");
+        assertTrue("xmlns:a1=" + value, value != null && 
value.equals("http://a1";));
+        value = child3.getAttributeNS("http://www.w3.org/2000/xmlns/";, "xsl");
+        assertTrue("xmlns:xsl=" + value, value != null && 
value.equals("http://www.w3.org/1999/XSL/Transform";));
+
+        Attr attr = child3.getAttributeNodeNS("http://a2";, "attr2");
+        assertNotNull("attr2 !=null", attr);
+        assertEquals("xsl:child3 has 5 attrs", 5, 
child3.getAttributes().getLength());
+    }
 
+    public void testWholeText() throws Exception {
+        DOMConfiguration config = builder.getDomConfig();
+        config.setParameter("error-handler", this);
+        config.setParameter("validate", Boolean.FALSE);
+        config.setParameter("entities", Boolean.TRUE);
+        Document doc = builder.parseURI("tests/dom/dom3/wholeText.xml");
+
+        Element test = (Element) doc.getElementsByTagName("elem").item(0);
+        test.appendChild(doc.createTextNode("Address: "));
+        test.appendChild(doc.createEntityReference("ent2"));
+        test.appendChild(doc.createTextNode("City: "));
+        test.appendChild(doc.createEntityReference("ent1"));
+        DocumentType doctype = doc.getDoctype();
+        Node entity = doctype.getEntities().getNamedItem("ent3");
+
+        NodeList ls = test.getChildNodes();
+        assertEquals("List length", 5, ls.getLength());
+
+        String compare1 = "Home Address: 1900 Dallas Road (East) City: Dallas. 
California. USA  PO #5668";
+        assertEquals("Compare1", compare1, ((Text) ls.item(0)).getWholeText());
+        String compare2 = "Home Address: 1900 Dallas Road (East) City: Dallas. 
California. USA  PO #5668";
+        assertEquals("Compare2", compare2, ((Text) ls.item(1)).getWholeText());
+
+        ((NodeImpl) ls.item(0)).setReadOnly(true, true);
+        Text original = (Text) ls.item(0);
+        Node newNode = original.replaceWholeText("Replace with this text");
+        ls = test.getChildNodes();
+        assertEquals("Length == 1", 1, ls.getLength());
+        assertEquals("Replacement works", "Replace with this text", 
ls.item(0).getNodeValue());
+        assertTrue("New node created", newNode != original);
+
+        Text text = doc.createTextNode("readonly");
+        ((NodeImpl) text).setReadOnly(true, true);
+        text = text.replaceWholeText("Data");
+        assertEquals("New value 'Data'", "Data", text.getNodeValue());
 
-            //************************
-            // TEST: replaceWholeText()
-            //       getWholeText()
-            //       
-            //************************
-           
-            //System.out.println("TEST #5: wholeText, input: 
tests/dom/dom3/wholeText.xml");
-           {
-            config = builder.getDomConfig();
-            config.setParameter("error-handler",errorHandler);
-            config.setParameter("validate", Boolean.FALSE);
-            config.setParameter("entities", Boolean.TRUE);
-            Document doc = builder.parseURI("tests/dom/dom3/wholeText.xml");
-
-            Element root = doc.getDocumentElement();
-            Element test = (Element)doc.getElementsByTagName("elem").item(0);
-            
-            test.appendChild(doc.createTextNode("Address: "));
-            test.appendChild(doc.createEntityReference("ent2"));
-            test.appendChild(doc.createTextNode("City: "));
-            
-            test.appendChild(doc.createEntityReference("ent1"));
-            DocumentType doctype = doc.getDoctype();
-            Node entity = doctype.getEntities().getNamedItem("ent3");
-
-            NodeList ls = test.getChildNodes();
-            Assertion.verify(ls.getLength()==5, "List length");
-            
-            String compare1 = "Home Address: 1900 Dallas Road (East) City: 
Dallas. California. USA  PO #5668";
-            
Assertion.verify(((Text)ls.item(0)).getWholeText().equals(compare1), 
"Compare1");
-            String compare2 = "Home Address: 1900 Dallas Road (East) City: 
Dallas. California. USA  PO #5668";
-            
Assertion.verify(((Text)ls.item(1)).getWholeText().equals(compare2), 
"Compare2");
-            
-
-            //TEST replaceWholeText()
-            ((NodeImpl)ls.item(0)).setReadOnly(true, true);
-            
-            Text original = (Text)ls.item(0);
-            Node newNode = original.replaceWholeText("Replace with this text");
-            ls = test.getChildNodes();
-            Assertion.verify(ls.getLength() == 1, "Length == 1");
-            Assertion.verify(ls.item(0).getNodeValue().equals("Replace with 
this text"), "Replacement works");
-            Assertion.verify(newNode != original, "New node created");
-
-            // replace text for node which is not yet attached to the tree
-            Text text = doc.createTextNode("readonly");
-            ((NodeImpl)text).setReadOnly(true, true);
-            text = text.replaceWholeText("Data");
-            Assertion.verify(text.getNodeValue().equals("Data"), "New value 
'Data'");
-
-            // test with second child that does not have any content
-            test = (Element)doc.getElementsByTagName("elem").item(1);
-            try {            
-                ((Text)test.getFirstChild()).replaceWholeText("can't replace");
-            } catch (DOMException e){
-               Assertion.verify(e !=null);
-            }
-            String compare3 = "Test: The Content ends here. ";
-            
//Assertion.assert(((Text)test.getFirstChild()).getWholeText().equals(compare3),
 "Compare3");
-            
-           }
-
-            //************************
-            // TEST: schema-type
-            //       schema-location
-            //       
-            //************************
-            {
-                errorCounter = 0;
-                config = builder.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("resource-resolver",resolver);
-                config.setParameter("validate", Boolean.TRUE);
-                config.setParameter("psvi", Boolean.TRUE);
-                
-                // schema-type is not set validate against both grammars 
-                errorCounter = 0;
-                Document core2 = 
builder.parseURI("tests/dom/dom3/both-error.xml");
-                Assertion.verify(errorCounter == 4, "4 errors should be 
reported");
-                
-                errorCounter = 0;
-                // set schema-type to be XML Schema 
-                config.setParameter("schema-type", 
"http://www.w3.org/2001/XMLSchema";);
-                // test parsing a file that has both XML schema and DTD
-                core2 = builder.parseURI("tests/dom/dom3/both.xml");
-                Assertion.verify(errorCounter == 0, "No errors should be 
reported");
-                
-            
-                // parse a file with XML schema and DTD but validate against 
DTD only
-                errorCounter = 0;
-                
config.setParameter("schema-type","http://www.w3.org/TR/REC-xml";);
-                core2 = builder.parseURI("tests/dom/dom3/both-error.xml");
-                Assertion.verify(errorCounter == 3, "3 errors should be 
reported");
-                
-                // parse a file with DTD only but set schema-location and 
-                // validate against XML Schema
-                // set schema location
-                
-                
-                core2 = builder.parseURI("tests/dom/dom3/both-error.xml");
-                
-                // normalize document
-                errorCounter = 0;
-                Element root = core2.getDocumentElement();
-                root.removeAttributeNS("http://www.w3.org/2001/XMLSchema";, 
"xsi");               
-                root.removeAttributeNS("http://www.w3.org/2001/XMLSchema";, 
"noNamespaceSchemaLocation");
-                config = core2.getDomConfig();
-                config.setParameter("error-handler",errorHandler);
-                config.setParameter("schema-type", 
"http://www.w3.org/2001/XMLSchema";);
-                config.setParameter("schema-location","personal.xsd");
-                config.setParameter("resource-resolver",resolver);
-                config.setParameter("validate", Boolean.TRUE);
-                core2.normalizeDocument();
-                Assertion.verify(errorCounter == 1, "1 error should be 
reported: "+errorCounter);
- 
-    
-            }
-            
-            
-            // baseURI tests
-            {
-                               LSParser parser = 
impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS,
-                                                                               
                                   null);
-                               Document doc = 
parser.parseURI("tests/dom/dom3/baseURI.xml");
-                               Element root = doc.getDocumentElement();
-                               NodeList ls = doc.getElementsByTagNameNS(null, 
"streetNum");
-                               Node e = ls.item(0);
-                               
Assertion.verify(((NodeImpl)e).getBaseURI().endsWith("tests/dom/dom3/baseURI.xml"),
 
-                                                                
"baseURI=tests/dom/dom3/baseURI.xml");
-                               ls = root.getElementsByTagNameNS(null, 
"header");
-                               Node p2 = ls.item(0);
-                               
Assertion.verify(((NodeImpl)p2).getBaseURI().equals("http://paragraph.com";), 
-                                                                
"baseURI=http://paragraph.com";);
-                               p2 = ls.item(1);
-                               
Assertion.verify(((NodeImpl)p2).getBaseURI().equals("http://paragraph.com2";), 
-                                "baseURI=http://paragraph.com2";);
+    }
 
-            }
+    public void testSchemaType() throws Exception {
+        // The resolveResource helper used here does not correctly handle all 
DTD resolution

Review Comment:
   add a TODO to fix this



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to