1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.org.w3c.dom;
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Attr;
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Document;
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Element;
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Node;
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.NodeList;
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.NamedNodeMap;
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.DocumentBuilder;
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic final class AttrGetOwnerElement extends DOMTestCase {
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    DOMDocumentBuilderFactory factory;
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    DocumentBuilder builder;
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() throws Exception {
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.setUp();
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            factory = new DOMDocumentBuilderFactory(DOMDocumentBuilderFactory
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getConfiguration2());
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            builder = factory.getBuilder();
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception " + e.getMessage());
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void tearDown() throws Exception {
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        factory = null;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        builder = null;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.tearDown();
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
35f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes// Assumes validation.
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//    public void testGetOwnerElement1() throws Throwable {
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        Document doc;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        Attr attr;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        Element element;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        Element ownerElement;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        String ownerElementName;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        NodeList elementList;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        NamedNodeMap attributes;
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        String nullNS = null;
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        doc = (Document) load("staffNS", builder);
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        elementList = doc.getElementsByTagNameNS("http://www.nist.gov",
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//                "employee");
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        element = (Element) elementList.item(1);
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        attributes = element.getAttributes();
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        attr = (Attr) attributes.getNamedItemNS(nullNS, "defaultAttr");
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        ownerElement = attr.getOwnerElement();
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        ownerElementName = ownerElement.getNodeName();
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        assertEquals("attrgetownerelement01", "emp:employee", ownerElementName);
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//    }
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetOwnerElement2() throws Throwable {
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document doc;
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Element element;
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Element ownerElement;
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String ownerElementName;
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Attr attr;
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doc = (Document) load("staffNS", builder);
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        element = doc.createElement("root");
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        attr = doc.createAttributeNS("http://www.w3.org/DOM/L1", "L1:att");
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        element.setAttributeNodeNS(attr);
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ownerElement = attr.getOwnerElement();
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ownerElementName = ownerElement.getNodeName();
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("attrgetownerelement02", "root", ownerElementName);
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetOwnerElement3() throws Throwable {
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document doc;
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Node ownerElement;
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Attr attr;
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doc = (Document) load("staffNS", builder);
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        attr = doc.createAttributeNS("http://www.w3.org/DOM", "dom:attr");
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ownerElement = attr.getOwnerElement();
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("attrgetownerelement03", ownerElement);
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetOwnerElement4() throws Throwable {
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document doc;
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document docImp;
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Node ownerElement;
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Element element;
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Attr attr;
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Attr attrImp;
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        NodeList addresses;
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doc = (Document) load("staffNS", builder);
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        docImp = (Document) load("staff", builder);
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        addresses = doc
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getElementsByTagNameNS("http://www.nist.gov", "address");
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        element = (Element) addresses.item(1);
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull("empAddressNotNull", element);
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        attr = element.getAttributeNodeNS("http://www.nist.gov", "zone");
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        attrImp = (Attr) docImp.importNode(attr, true);
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ownerElement = attrImp.getOwnerElement();
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("attrgetownerelement04", ownerElement);
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetOwnerElement5() throws Throwable {
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document doc;
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Node element;
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Element ownerElement;
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Element parentElement;
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        NodeList elementList;
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String ownerElementName;
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Attr attr;
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        NamedNodeMap nodeMap;
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String nullNS = null;
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doc = (Document) load("staffNS", builder);
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        elementList = doc.getElementsByTagNameNS("*", "address");
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        element = elementList.item(1);
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parentElement = (Element) element.getParentNode();
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        nodeMap = element.getAttributes();
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parentElement.removeChild(element);
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        attr = (Attr) nodeMap.getNamedItemNS(nullNS, "street");
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ownerElement = attr.getOwnerElement();
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ownerElementName = ownerElement.getNodeName();
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("attrgetownerelement05", "address", ownerElementName);
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
127