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.Element;
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.w3c.dom.Document;
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.w3c.dom.NodeList;
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.xml.parsers.DocumentBuilder;
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The "hasAttribute()" method for an Element should return true if the element
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * has an attribute with the given name. Retrieve the first "address" element
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * and the "hasAttribute()" method should return false since the element does
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * not have a default value.
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @author NIST
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @author Mary Brady
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see <a
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *      href="http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttr">http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttr</a>
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Element.class)
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic final class HasAttribute extends DOMTestCase {
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    DOMDocumentBuilderFactory factory;
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    DocumentBuilder builder;
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void setUp() throws Exception {
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super.setUp();
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            factory = new DOMDocumentBuilderFactory(DOMDocumentBuilderFactory
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    .getConfiguration1());
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            builder = factory.getBuilder();
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Unexpected exception" + e.getMessage());
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void tearDown() throws Exception {
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        factory = null;
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        builder = null;
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super.tearDown();
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Runs the test case.
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws Throwable
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *             Any uncaught exception causes test to fail
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Verifies that hasAttribute method returns false.",
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasAttribute",
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testHasAttribute1() throws Throwable {
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Document doc;
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        NodeList elementList;
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Element testNode;
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean state;
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        doc = (Document) load("staff", builder);
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        elementList = doc.getElementsByTagName("address");
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        testNode = (Element) elementList.item(4);
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        state = testNode.hasAttribute("domestic");
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse("throw_False", state);
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// Assumes validation.
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//    public void testHasAttribute2() throws Throwable {
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        Document doc;
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        NodeList elementList;
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        Element testNode;
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        boolean state;
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        doc = (Document) load("staff", builder);
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        elementList = doc.getElementsByTagName("address");
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        testNode = (Element) elementList.item(0);
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        state = testNode.hasAttribute("street");
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        assertTrue("throw_True", state);
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//    }
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Verifies that hasAttribute method returns false.",
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasAttribute",
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testHasAttribute3() throws Throwable {
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Document doc;
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        NodeList elementList;
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Element testNode;
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean state;
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        doc = (Document) load("staff", builder);
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        elementList = doc.getElementsByTagName("address");
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        testNode = (Element) elementList.item(0);
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        state = testNode.hasAttribute("nomatch");
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse("throw_False", state);
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Verifies that hasAttribute method returns true.",
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasAttribute",
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testHasAttribute4() throws Throwable {
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Document doc;
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        NodeList elementList;
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Element testNode;
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean state;
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        doc = (Document) load("staffNS", builder);
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        elementList = doc.getElementsByTagName("address");
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        testNode = (Element) elementList.item(0);
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        state = testNode.hasAttribute("dmstc:domestic");
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("hasDomesticAttr", state);
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
120