1 10 package org.mmbase.util.xml; 11 12 import java.util.*; 13 import org.xml.sax.*; 14 import org.w3c.dom.*; 15 import java.io.*; 16 import junit.framework.TestCase; 17 18 23 public class DocumentReaderTest extends TestCase { 24 25 26 private Element getElement(String s) { 27 DocumentReader reader = new DocumentReader(new InputSource(new StringReader(s)), false); 28 return reader.getRootElement(); 29 } 30 31 public void testAppendChild() { 32 Element parent = getElement("<a />"); 33 { 34 String res = XMLWriter.write(parent, false, true); 35 assertEquals(res + " != <a/>", res, "<a/>"); 36 } 37 38 Element b = parent.getOwnerDocument().createElement("b"); 39 DocumentReader.appendChild(parent, b, "b"); 40 { 41 String res = XMLWriter.write(parent, false, true); 42 assertEquals(res, res, "<a><b/></a>"); 43 } 44 } 45 public void testAppendChild2() { 46 Element parent = getElement("<a><b /></a>"); 47 Element c = parent.getOwnerDocument().createElement("c"); 48 DocumentReader.appendChild(parent, c, "b,c"); 49 String res = XMLWriter.write(parent, false, true); 50 assertEquals(res, res, "<a><b/><c/></a>"); 51 } 52 public void testAppendChild3() { 53 Element parent = getElement("<a></a>"); 54 Element c = parent.getOwnerDocument().createElement("c"); 55 DocumentReader.appendChild(parent, c, "b,c"); 56 String res = XMLWriter.write(parent, false, true); 57 assertEquals(res, res, "<a><c/></a>"); 58 } 59 public void testAppendChild4() { 60 Element parent = getElement("<a><b /><b /></a>"); 61 Element c = parent.getOwnerDocument().createElement("c"); 62 DocumentReader.appendChild(parent, c, "b,c"); 63 String res = XMLWriter.write(parent, false, true); 64 assertEquals(res, res, "<a><b/><b/><c/></a>"); 65 } 66 public void testAppendChild5() { 67 Element parent = getElement("<a><b /><b /><d /></a>"); 68 Element c = parent.getOwnerDocument().createElement("c"); 69 DocumentReader.appendChild(parent, c, "b,c"); 70 String res = XMLWriter.write(parent, false, true); 71 assertEquals(res, res, "<a><b/><b/><c/><d/></a>"); 72 } 73 public void testAppendChild6() { 74 Element parent = getElement("<a><b /><b /><d /></a>"); 75 Element c = parent.getOwnerDocument().createElement("c"); 76 DocumentReader.appendChild(parent, c, "b"); 77 String res = XMLWriter.write(parent, false, true); 78 assertEquals(res, res, "<a><b/><b/><c/><d/></a>"); 79 } 80 public void testAppendChild7() { 81 Element parent = getElement("<a><b /><b /><c id='t' /><d /></a>"); 82 Element c = parent.getOwnerDocument().createElement("c"); 83 DocumentReader.appendChild(parent, c, "b"); 84 String res = XMLWriter.write(parent, false, true); 85 assertEquals(res, res, "<a><b/><b/><c/><c id=\"t\"/><d/></a>"); 86 } 87 public void testAppendChild8() { 88 Element parent = getElement("<a><b /><b /><c id='t' /><d /></a>"); 89 Element c = parent.getOwnerDocument().createElement("c"); 90 DocumentReader.appendChild(parent, c, "b,c"); 91 String res = XMLWriter.write(parent, false, true); 92 assertEquals(res, res, "<a><b/><b/><c id=\"t\"/><c/><d/></a>"); 93 } 94 public void testAppendChild9() { 95 Element parent = getElement("<a><x /></a>"); 96 Element c = parent.getOwnerDocument().createElement("c"); 97 DocumentReader.appendChild(parent, c, "(x|y),c"); 98 String res = XMLWriter.write(parent, false, true); 99 assertEquals(res, res, "<a><x/><c/></a>"); 100 } 101 public void testAppendChild10() { 102 Element parent = getElement("<a><q /></a>"); 103 Element c = parent.getOwnerDocument().createElement("c"); 104 DocumentReader.appendChild(parent, c, "(x|y),c"); 105 String res = XMLWriter.write(parent, false, true); 106 assertEquals(res, res, "<a><c/><q/></a>"); 107 } 108 109 private void testToDocument(String s) { 110 Element parent1 = getElement(s); 111 Element parent2 = DocumentReader.toDocument(parent1).getDocumentElement(); 112 String res1 = XMLWriter.write(parent1, false, true); 113 String res2 = XMLWriter.write(parent2, false, true); 114 assertTrue(res1 + "!=" + res2, res1.equals(res2)); 115 } 116 public void testToDocument() { 117 String [] cases = { "<a><b /></a>", 118 "<a xml:lang='nl'><b /></a>", 119 "<a xml:lang='nl' c='d'><b /></a>", 120 "<a xml:lang='nl' c='d'><b /><b /></a>", 121 "<a xml:lang='nl' c='d'><b /><!-- hoi --><b /></a>", 122 "<a xml:lang='nl'><b>abc</b><b c='d'>hoi<c/></b></a>"}; 123 for (int i = 0 ; i < cases.length; i ++) { 124 testToDocument(cases[i]); 125 } 126 } 127 } 128 | Popular Tags |