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