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