NodeNormalize.java revision cc05ad238516f1303687aba4a978e24e57c0c07a
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.TestTargets;
25import dalvik.annotation.TestLevel;
26import dalvik.annotation.TestTargetNew;
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    @TestTargetNew(
91        level = TestLevel.COMPLETE,
92        notes = "",
93        method = "normalize",
94        args = {}
95    )
96    public void testNormalize() throws Throwable {
97        Document doc;
98        Document newDoc;
99        DOMImplementation domImpl;
100
101        DocumentType docTypeNull = null;
102
103        Element documentElement;
104        Element element1;
105        Element element2;
106        Element element3;
107        Element element4;
108        Element element5;
109        Element element6;
110        Element element7;
111        Text text1;
112        Text text2;
113        Text text3;
114        ProcessingInstruction pi;
115        CDATASection cData;
116        Comment comment;
117        EntityReference entRef;
118        NodeList elementList;
119
120        doc = (Document) load("staffNS", builder);
121        domImpl = doc.getImplementation();
122        newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test",
123                "dom:root", docTypeNull);
124        element1 = newDoc.createElement("element1");
125        element2 = newDoc.createElement("element2");
126        element3 = newDoc.createElement("element3");
127        element4 = newDoc.createElement("element4");
128        element5 = newDoc.createElement("element5");
129        element6 = newDoc.createElement("element6");
130        element7 = newDoc.createElement("element7");
131        text1 = newDoc.createTextNode("text1");
132        text2 = newDoc.createTextNode("text2");
133        text3 = newDoc.createTextNode("text3");
134        cData = newDoc.createCDATASection("Cdata");
135        comment = newDoc.createComment("comment");
136        pi = newDoc.createProcessingInstruction("PITarget", "PIData");
137        entRef = newDoc.createEntityReference("EntRef");
138        assertNotNull("createdEntRefNotNull", entRef);
139        documentElement = newDoc.getDocumentElement();
140        documentElement.appendChild(element1);
141        element2.appendChild(text1);
142        element2.appendChild(text2);
143        element2.appendChild(text3);
144        element1.appendChild(element2);
145        text1 = (Text) text1.cloneNode(false);
146        text2 = (Text) text2.cloneNode(false);
147        element3.appendChild(entRef);
148        element3.appendChild(text1);
149        element3.appendChild(text2);
150        element1.appendChild(element3);
151        text1 = (Text) text1.cloneNode(false);
152        text2 = (Text) text2.cloneNode(false);
153        element4.appendChild(cData);
154        element4.appendChild(text1);
155        element4.appendChild(text2);
156        element1.appendChild(element4);
157        text2 = (Text) text2.cloneNode(false);
158        text3 = (Text) text3.cloneNode(false);
159        element5.appendChild(comment);
160        element5.appendChild(text2);
161        element5.appendChild(text3);
162        element1.appendChild(element5);
163        text2 = (Text) text2.cloneNode(false);
164        text3 = (Text) text3.cloneNode(false);
165        element6.appendChild(pi);
166        element6.appendChild(text2);
167        element6.appendChild(text3);
168        element1.appendChild(element6);
169        entRef = (EntityReference) entRef.cloneNode(false);
170        text1 = (Text) text1.cloneNode(false);
171        text2 = (Text) text2.cloneNode(false);
172        text3 = (Text) text3.cloneNode(false);
173        element7.appendChild(entRef);
174        element7.appendChild(text1);
175        element7.appendChild(text2);
176        element7.appendChild(text3);
177        element1.appendChild(element7);
178        elementList = element1.getChildNodes();
179        assertEquals("nodeNormalize01_1Bef", 6, elementList.getLength());
180        elementList = element2.getChildNodes();
181        assertEquals("nodeNormalize01_2Bef", 3, elementList.getLength());
182        elementList = element3.getChildNodes();
183        assertEquals("nodeNormalize01_3Bef", 3, elementList.getLength());
184        elementList = element4.getChildNodes();
185        assertEquals("nodeNormalize01_4Bef", 3, elementList.getLength());
186        elementList = element5.getChildNodes();
187        assertEquals("nodeNormalize01_5Bef", 3, elementList.getLength());
188        elementList = element6.getChildNodes();
189        assertEquals("nodeNormalize01_6Bef", 3, elementList.getLength());
190        elementList = element7.getChildNodes();
191        assertEquals("nodeNormalize01_7Bef", 4, elementList.getLength());
192        newDoc.normalize();
193        elementList = element1.getChildNodes();
194        assertEquals("nodeNormalize01_1Aft", 6, elementList.getLength());
195        elementList = element2.getChildNodes();
196        assertEquals("nodeNormalize01_2Aft", 1, elementList.getLength());
197        elementList = element3.getChildNodes();
198        assertEquals("nodeNormalize01_3Aft", 2, elementList.getLength());
199        elementList = element4.getChildNodes();
200        assertEquals("nodeNormalize01_4Aft", 2, elementList.getLength());
201        elementList = element5.getChildNodes();
202        assertEquals("nodeNormalize01_5Aft", 2, elementList.getLength());
203        elementList = element6.getChildNodes();
204        assertEquals("nodeNormalize01_6Aft", 2, elementList.getLength());
205        elementList = element7.getChildNodes();
206        assertEquals("nodeNormalize01_7Aft", 2, elementList.getLength());
207    }
208
209}
210