NodeNormalize.java revision 89c1feb0a69a7707b271086e749975b3f7acacf7
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 dalvik.annotation.TestInfo;
25import dalvik.annotation.TestLevel;
26import dalvik.annotation.TestTarget;
27import dalvik.annotation.TestTargetClass;
28
29import org.w3c.dom.Node;
30import org.w3c.dom.Document;
31import org.w3c.dom.Element;
32import org.w3c.dom.DocumentType;
33import org.w3c.dom.Text;
34import org.w3c.dom.DOMImplementation;
35import org.w3c.dom.EntityReference;
36import org.w3c.dom.NodeList;
37import org.w3c.dom.CDATASection;
38import org.w3c.dom.ProcessingInstruction;
39import org.w3c.dom.Comment;
40
41import javax.xml.parsers.DocumentBuilder;
42
43/**
44 * The method "normalize" puts all Text nodes in the full depth of the sub-tree
45 * underneath this Node, including attribute nodes, into a "normal" form where
46 * only structure (e.g., elements, comments, processing instructions, CDATA
47 * sections, and entity references) separates Text nodes, i.e., there are
48 * neither adjacent Text nodes nor empty Text nodes.
49 *
50 * Create a dom tree consisting of elements, comments, processing instructions,
51 * CDATA sections, and entity references nodes seperated by text nodes. Check
52 * the length of the node list of each before and after normalize has been
53 * called.
54 *
55 * @author IBM
56 * @author Neil Delima
57 * @see <a
58 *      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>
59 */
60@TestTargetClass(Node.class)
61public final class NodeNormalize extends DOMTestCase {
62
63    DOMDocumentBuilderFactory factory;
64
65    DocumentBuilder builder;
66
67    protected void setUp() throws Exception {
68        super.setUp();
69        try {
70            factory = new DOMDocumentBuilderFactory(DOMDocumentBuilderFactory
71                    .getConfiguration1());
72            builder = factory.getBuilder();
73        } catch (Exception e) {
74            fail("Unexpected exception" + e.getMessage());
75        }
76    }
77
78    protected void tearDown() throws Exception {
79        factory = null;
80        builder = null;
81        super.tearDown();
82    }
83
84    /**
85     * Runs the test case.
86     *
87     * @throws Throwable
88     *             Any uncaught exception causes test to fail
89     */
90    @TestInfo(
91      level = TestLevel.COMPLETE,
92      purpose = "",
93      targets = {
94        @TestTarget(
95          methodName = "normalize",
96          methodArgs = {}
97        )
98    })
99    public void testNormalize() throws Throwable {
100        Document doc;
101        Document newDoc;
102        DOMImplementation domImpl;
103
104        DocumentType docTypeNull = null;
105
106        Element documentElement;
107        Element element1;
108        Element element2;
109        Element element3;
110        Element element4;
111        Element element5;
112        Element element6;
113        Element element7;
114        Text text1;
115        Text text2;
116        Text text3;
117        ProcessingInstruction pi;
118        CDATASection cData;
119        Comment comment;
120        EntityReference entRef;
121        NodeList elementList;
122
123        doc = (Document) load("staffNS", builder);
124        domImpl = doc.getImplementation();
125        newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test",
126                "dom:root", docTypeNull);
127        element1 = newDoc.createElement("element1");
128        element2 = newDoc.createElement("element2");
129        element3 = newDoc.createElement("element3");
130        element4 = newDoc.createElement("element4");
131        element5 = newDoc.createElement("element5");
132        element6 = newDoc.createElement("element6");
133        element7 = newDoc.createElement("element7");
134        text1 = newDoc.createTextNode("text1");
135        text2 = newDoc.createTextNode("text2");
136        text3 = newDoc.createTextNode("text3");
137        cData = newDoc.createCDATASection("Cdata");
138        comment = newDoc.createComment("comment");
139        pi = newDoc.createProcessingInstruction("PITarget", "PIData");
140        entRef = newDoc.createEntityReference("EntRef");
141        assertNotNull("createdEntRefNotNull", entRef);
142        documentElement = newDoc.getDocumentElement();
143        documentElement.appendChild(element1);
144        element2.appendChild(text1);
145        element2.appendChild(text2);
146        element2.appendChild(text3);
147        element1.appendChild(element2);
148        text1 = (Text) text1.cloneNode(false);
149        text2 = (Text) text2.cloneNode(false);
150        element3.appendChild(entRef);
151        element3.appendChild(text1);
152        element3.appendChild(text2);
153        element1.appendChild(element3);
154        text1 = (Text) text1.cloneNode(false);
155        text2 = (Text) text2.cloneNode(false);
156        element4.appendChild(cData);
157        element4.appendChild(text1);
158        element4.appendChild(text2);
159        element1.appendChild(element4);
160        text2 = (Text) text2.cloneNode(false);
161        text3 = (Text) text3.cloneNode(false);
162        element5.appendChild(comment);
163        element5.appendChild(text2);
164        element5.appendChild(text3);
165        element1.appendChild(element5);
166        text2 = (Text) text2.cloneNode(false);
167        text3 = (Text) text3.cloneNode(false);
168        element6.appendChild(pi);
169        element6.appendChild(text2);
170        element6.appendChild(text3);
171        element1.appendChild(element6);
172        entRef = (EntityReference) entRef.cloneNode(false);
173        text1 = (Text) text1.cloneNode(false);
174        text2 = (Text) text2.cloneNode(false);
175        text3 = (Text) text3.cloneNode(false);
176        element7.appendChild(entRef);
177        element7.appendChild(text1);
178        element7.appendChild(text2);
179        element7.appendChild(text3);
180        element1.appendChild(element7);
181        elementList = element1.getChildNodes();
182        assertEquals("nodeNormalize01_1Bef", 6, elementList.getLength());
183        elementList = element2.getChildNodes();
184        assertEquals("nodeNormalize01_2Bef", 3, elementList.getLength());
185        elementList = element3.getChildNodes();
186        assertEquals("nodeNormalize01_3Bef", 3, elementList.getLength());
187        elementList = element4.getChildNodes();
188        assertEquals("nodeNormalize01_4Bef", 3, elementList.getLength());
189        elementList = element5.getChildNodes();
190        assertEquals("nodeNormalize01_5Bef", 3, elementList.getLength());
191        elementList = element6.getChildNodes();
192        assertEquals("nodeNormalize01_6Bef", 3, elementList.getLength());
193        elementList = element7.getChildNodes();
194        assertEquals("nodeNormalize01_7Bef", 4, elementList.getLength());
195        newDoc.normalize();
196        elementList = element1.getChildNodes();
197        assertEquals("nodeNormalize01_1Aft", 6, elementList.getLength());
198        elementList = element2.getChildNodes();
199        assertEquals("nodeNormalize01_2Aft", 1, elementList.getLength());
200        elementList = element3.getChildNodes();
201        assertEquals("nodeNormalize01_3Aft", 2, elementList.getLength());
202        elementList = element4.getChildNodes();
203        assertEquals("nodeNormalize01_4Aft", 2, elementList.getLength());
204        elementList = element5.getChildNodes();
205        assertEquals("nodeNormalize01_5Aft", 2, elementList.getLength());
206        elementList = element6.getChildNodes();
207        assertEquals("nodeNormalize01_6Aft", 2, elementList.getLength());
208        elementList = element7.getChildNodes();
209        assertEquals("nodeNormalize01_7Aft", 2, elementList.getLength());
210    }
211
212}
213