1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.org.w3c.dom;
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets;
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel;
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew;
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass;
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.w3c.dom.Document;
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.w3c.dom.Element;
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.w3c.dom.DOMException;
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.w3c.dom.DocumentType;
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.w3c.dom.DOMImplementation;
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.xml.parsers.DocumentBuilder;
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The method createElementNS creates an element of the given valid
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * qualifiedName and NamespaceURI.
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Invoke the createElementNS method on this Document object with a valid
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * namespaceURI and qualifiedName. Check if a valid Element object is returned
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * with the same node attributes.
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @author IBM
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @author Neil Delima
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see <a
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *      href="http://www.w3.org/TR/DOM-Level-2-Core/core">http://www.w3.org/TR/DOM-Level-2-Core/core</a>
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see <a
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *      href="http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS">http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS</a>
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Document.class)
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic final class DocumentCreateElementNS extends DOMTestCase {
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    DOMDocumentBuilderFactory factory;
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    DocumentBuilder builder;
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void setUp() throws Exception {
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super.setUp();
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            factory = new DOMDocumentBuilderFactory(DOMDocumentBuilderFactory
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    .getConfiguration1());
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            builder = factory.getBuilder();
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Unexpected exception" + e.getMessage());
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void tearDown() throws Exception {
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        factory = null;
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        builder = null;
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super.tearDown();
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Runs the test case.
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws Throwable
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *             Any uncaught exception causes test to fail
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Verifies positive functionality.",
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "createElementNS",
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class, java.lang.String.class}
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testCreateElementNS1() throws Throwable {
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Document doc;
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Element element;
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String namespaceURI = "http://www.w3.org/DOM/Test/level2";
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String qualifiedName = "XML:XML";
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String nodeName;
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String nsURI;
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String localName;
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String prefix;
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String tagName;
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        doc = (Document) load("staffNS", builder);
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        element = doc.createElementNS(namespaceURI, qualifiedName);
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        nodeName = element.getNodeName();
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        nsURI = element.getNamespaceURI();
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        localName = element.getLocalName();
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        prefix = element.getPrefix();
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        tagName = element.getTagName();
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("documentcreateelementNS01_nodeName", "XML:XML", nodeName);
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("documentcreateelementNS01_namespaceURI",
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "http://www.w3.org/DOM/Test/level2", nsURI);
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("documentcreateelementNS01_localName", "XML", localName);
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("documentcreateelementNS01_prefix", "XML", prefix);
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("documentcreateelementNS01_tagName", "XML:XML", tagName);
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Verifies that createElementNS throws DOMException with INVALID_CHARACTER_ERR code.",
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "createElementNS",
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class, java.lang.String.class}
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testCreateElementNS2() throws Throwable {
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Document doc;
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String namespaceURI = null;
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String qualifiedName = "^^";
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        doc = (Document) load("staffNS", builder);
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean success = false;
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try {
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                doc.createElementNS(namespaceURI, qualifiedName);
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            } catch (DOMException ex) {
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                success = (ex.code == DOMException.INVALID_CHARACTER_ERR);
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("documentcreateelementNS02", success);
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Verifies that createElementNS throws DOMException with NAMESPACE_ERR code.",
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "createElementNS",
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class, java.lang.String.class}
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testCreateElementNS5() throws Throwable {
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Document doc;
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String namespaceURI = null;
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String qualifiedName = "null:xml";
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        doc = (Document) load("staffNS", builder);
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean success = false;
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try {
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                doc.createElementNS(namespaceURI, qualifiedName);
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            } catch (DOMException ex) {
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                success = (ex.code == DOMException.NAMESPACE_ERR);
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("documentcreateelementNS05", success);
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Verifies that createElementNS throws DOMException with NAMESPACE_ERR code.",
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "createElementNS",
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class, java.lang.String.class}
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testCreateElementNS6() throws Throwable {
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Document doc;
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Document newDoc;
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        DocumentType docType = null;
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        DOMImplementation domImpl;
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String namespaceURI = "http://www.w3.org/xml/1998/namespace ";
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String qualifiedName = "xml:root";
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        doc = (Document) load("staffNS", builder);
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        domImpl = doc.getImplementation();
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test",
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "dom:doc", docType);
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean success = false;
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try {
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                newDoc.createElementNS(namespaceURI, qualifiedName);
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            } catch (DOMException ex) {
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                success = (ex.code == DOMException.NAMESPACE_ERR);
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("documentcreateelementNS06", success);
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
170