1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.org.w3c.dom;
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList;
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.List;
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.DOMImplementation;
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Document;
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.DocumentBuilder;
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The "feature" parameter in the "hasFeature(feature,version)" method is the
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * package name of the feature. Legal values are XML and HTML and CORE. (Test
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * for feature core, lower case)
15f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Retrieve the entire DOM document and invoke its "getImplementation()" method.
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This should create a DOMImplementation object whose "hasFeature(feature,
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * version)" method is invoked with feature equal to "core". The method should
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * return a boolean "true".
20f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author NIST
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author Mary Brady
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see <a
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *      href="http://www.w3.org/TR/DOM-Level-2-Core/core#ID-5CED94D7">http://www.w3.org/TR/DOM-Level-2-Core/core#ID-5CED94D7</a>
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic final class DOMImplementationHasFeature extends DOMTestCase {
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    DOMDocumentBuilderFactory factory;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    DocumentBuilder builder;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() throws Exception {
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.setUp();
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            factory = new DOMDocumentBuilderFactory(DOMDocumentBuilderFactory
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getConfiguration1());
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            builder = factory.getBuilder();
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception" + e.getMessage());
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void tearDown() throws Exception {
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        factory = null;
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        builder = null;
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.tearDown();
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Runs the test case.
51f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws Throwable
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             Any uncaught exception causes test to fail
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testHasFeatureCore() throws Throwable {
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document doc;
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DOMImplementation domImpl;
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean state;
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doc = (Document) load("staff", builder);
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        domImpl = doc.getImplementation();
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        state = domImpl.hasFeature("core", "2.0");
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("domimplementationFeaturecoreAssert", state);
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testHasFeatureXml() throws Throwable {
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document doc;
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DOMImplementation domImpl;
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean state;
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doc = (Document) load("staff", builder);
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        domImpl = doc.getImplementation();
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        state = domImpl.hasFeature("xml", "2.0");
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("domimplementationFeaturexmlVersion2Assert", state);
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testHasFeature1() throws Throwable {
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document doc;
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DOMImplementation domImpl;
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String version = "";
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String version1 = "1.0";
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String version2 = "2.0";
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String featureCore;
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String featureXML;
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean success;
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List<String> featuresXML = new ArrayList<String>();
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        featuresXML.add("XML");
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        featuresXML.add("xmL");
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List<String> featuresCore = new ArrayList<String>();
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        featuresCore.add("Core");
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        featuresCore.add("CORE");
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doc = (Document) load("staffNS", builder);
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        domImpl = doc.getImplementation();
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int indexN10063 = 0; indexN10063 < featuresXML.size(); indexN10063++) {
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            featureXML = (String) featuresXML.get(indexN10063);
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            success = domImpl.hasFeature(featureXML, version);
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("domimplementationhasfeature01_XML_1", success);
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            success = domImpl.hasFeature(featureXML, version1);
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("domimplementationhasfeature01_XML_2", success);
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int indexN1007C = 0; indexN1007C < featuresCore.size(); indexN1007C++) {
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            featureCore = (String) featuresCore.get(indexN1007C);
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            success = domImpl.hasFeature(featureCore, version);
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("domimplementationhasfeature01_Core_1", success);
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            success = domImpl.hasFeature(featureCore, version1);
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            success = domImpl.hasFeature(featureCore, version2);
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("domimplementationhasfeature01_Core_3", success);
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testHasFeature2() throws Throwable {
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document doc;
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DOMImplementation domImpl;
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean success;
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        doc = (Document) load("staffNS", builder);
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        domImpl = doc.getImplementation();
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        success = domImpl.hasFeature("Blah Blah", "");
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("domimplementationhasfeature02", success);
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
118