1/* 2 This Java source file was generated by test-to-java.xsl 3 and is a derived work from the source document. 4 The source document contained the following notice: 5 6 7 8 Copyright (c) 2001-2004 World Wide Web Consortium, 9 (Massachusetts Institute of Technology, Institut National de 10 Recherche en Informatique et en Automatique, Keio University). All 11 Rights Reserved. This program is distributed under the W3C's Software 12 Intellectual Property License. This program is distributed in the 13 hope that it will be useful, but WITHOUT ANY WARRANTY; without even 14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 15 PURPOSE. 16 17 See W3C License http://www.w3.org/Consortium/Legal/ for more details. 18 19 20 */ 21 22package tests.org.w3c.dom; 23 24import org.w3c.dom.Node; 25import org.w3c.dom.Document; 26import org.w3c.dom.Element; 27import org.w3c.dom.DocumentType; 28import org.w3c.dom.Text; 29import org.w3c.dom.DOMImplementation; 30import org.w3c.dom.EntityReference; 31import org.w3c.dom.NodeList; 32import org.w3c.dom.CDATASection; 33import org.w3c.dom.ProcessingInstruction; 34import org.w3c.dom.Comment; 35 36import javax.xml.parsers.DocumentBuilder; 37 38/** 39 * The method "normalize" puts all Text nodes in the full depth of the sub-tree 40 * underneath this Node, including attribute nodes, into a "normal" form where 41 * only structure (e.g., elements, comments, processing instructions, CDATA 42 * sections, and entity references) separates Text nodes, i.e., there are 43 * neither adjacent Text nodes nor empty Text nodes. 44 * 45 * Create a dom tree consisting of elements, comments, processing instructions, 46 * CDATA sections, and entity references nodes seperated by text nodes. Check 47 * the length of the node list of each before and after normalize has been 48 * called. 49 * 50 * @author IBM 51 * @author Neil Delima 52 * @see <a 53 * href="http://www.w3.org/TR/DOM-Level-2-Core/core#ID-normalize">http://www.w3.org/TR/DOM-Level-2-Core/core#ID-normalize</a> 54 */ 55public final class NodeNormalize extends DOMTestCase { 56 57 DOMDocumentBuilderFactory factory; 58 59 DocumentBuilder builder; 60 61 protected void setUp() throws Exception { 62 super.setUp(); 63 try { 64 factory = new DOMDocumentBuilderFactory(DOMDocumentBuilderFactory 65 .getConfiguration1()); 66 builder = factory.getBuilder(); 67 } catch (Exception e) { 68 fail("Unexpected exception" + e.getMessage()); 69 } 70 } 71 72 protected void tearDown() throws Exception { 73 factory = null; 74 builder = null; 75 super.tearDown(); 76 } 77 78 /** 79 * Runs the test case. 80 * 81 * @throws Throwable 82 * Any uncaught exception causes test to fail 83 */ 84 public void testNormalize() throws Throwable { 85 Document doc; 86 Document newDoc; 87 DOMImplementation domImpl; 88 89 DocumentType docTypeNull = null; 90 91 Element documentElement; 92 Element element1; 93 Element element2; 94 Element element3; 95 Element element4; 96 Element element5; 97 Element element6; 98 Element element7; 99 Text text1; 100 Text text2; 101 Text text3; 102 ProcessingInstruction pi; 103 CDATASection cData; 104 Comment comment; 105 EntityReference entRef; 106 NodeList elementList; 107 108 doc = (Document) load("staffNS", builder); 109 domImpl = doc.getImplementation(); 110 newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test", 111 "dom:root", docTypeNull); 112 element1 = newDoc.createElement("element1"); 113 element2 = newDoc.createElement("element2"); 114 element3 = newDoc.createElement("element3"); 115 element4 = newDoc.createElement("element4"); 116 element5 = newDoc.createElement("element5"); 117 element6 = newDoc.createElement("element6"); 118 element7 = newDoc.createElement("element7"); 119 text1 = newDoc.createTextNode("text1"); 120 text2 = newDoc.createTextNode("text2"); 121 text3 = newDoc.createTextNode("text3"); 122 cData = newDoc.createCDATASection("Cdata"); 123 comment = newDoc.createComment("comment"); 124 pi = newDoc.createProcessingInstruction("PITarget", "PIData"); 125 entRef = newDoc.createEntityReference("EntRef"); 126 assertNotNull("createdEntRefNotNull", entRef); 127 documentElement = newDoc.getDocumentElement(); 128 documentElement.appendChild(element1); 129 element2.appendChild(text1); 130 element2.appendChild(text2); 131 element2.appendChild(text3); 132 element1.appendChild(element2); 133 text1 = (Text) text1.cloneNode(false); 134 text2 = (Text) text2.cloneNode(false); 135 element3.appendChild(entRef); 136 element3.appendChild(text1); 137 element3.appendChild(text2); 138 element1.appendChild(element3); 139 text1 = (Text) text1.cloneNode(false); 140 text2 = (Text) text2.cloneNode(false); 141 element4.appendChild(cData); 142 element4.appendChild(text1); 143 element4.appendChild(text2); 144 element1.appendChild(element4); 145 text2 = (Text) text2.cloneNode(false); 146 text3 = (Text) text3.cloneNode(false); 147 element5.appendChild(comment); 148 element5.appendChild(text2); 149 element5.appendChild(text3); 150 element1.appendChild(element5); 151 text2 = (Text) text2.cloneNode(false); 152 text3 = (Text) text3.cloneNode(false); 153 element6.appendChild(pi); 154 element6.appendChild(text2); 155 element6.appendChild(text3); 156 element1.appendChild(element6); 157 entRef = (EntityReference) entRef.cloneNode(false); 158 text1 = (Text) text1.cloneNode(false); 159 text2 = (Text) text2.cloneNode(false); 160 text3 = (Text) text3.cloneNode(false); 161 element7.appendChild(entRef); 162 element7.appendChild(text1); 163 element7.appendChild(text2); 164 element7.appendChild(text3); 165 element1.appendChild(element7); 166 elementList = element1.getChildNodes(); 167 assertEquals("nodeNormalize01_1Bef", 6, elementList.getLength()); 168 elementList = element2.getChildNodes(); 169 assertEquals("nodeNormalize01_2Bef", 3, elementList.getLength()); 170 elementList = element3.getChildNodes(); 171 assertEquals("nodeNormalize01_3Bef", 3, elementList.getLength()); 172 elementList = element4.getChildNodes(); 173 assertEquals("nodeNormalize01_4Bef", 3, elementList.getLength()); 174 elementList = element5.getChildNodes(); 175 assertEquals("nodeNormalize01_5Bef", 3, elementList.getLength()); 176 elementList = element6.getChildNodes(); 177 assertEquals("nodeNormalize01_6Bef", 3, elementList.getLength()); 178 elementList = element7.getChildNodes(); 179 assertEquals("nodeNormalize01_7Bef", 4, elementList.getLength()); 180 newDoc.normalize(); 181 elementList = element1.getChildNodes(); 182 assertEquals("nodeNormalize01_1Aft", 6, elementList.getLength()); 183 elementList = element2.getChildNodes(); 184 assertEquals("nodeNormalize01_2Aft", 1, elementList.getLength()); 185 elementList = element3.getChildNodes(); 186 assertEquals("nodeNormalize01_3Aft", 2, elementList.getLength()); 187 elementList = element4.getChildNodes(); 188 assertEquals("nodeNormalize01_4Aft", 2, elementList.getLength()); 189 elementList = element5.getChildNodes(); 190 assertEquals("nodeNormalize01_5Aft", 2, elementList.getLength()); 191 elementList = element6.getChildNodes(); 192 assertEquals("nodeNormalize01_6Aft", 2, elementList.getLength()); 193 elementList = element7.getChildNodes(); 194 assertEquals("nodeNormalize01_7Aft", 2, elementList.getLength()); 195 } 196 197} 198