1 /* 2 * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 package org.w3c.dom.ptests; 24 25 import static org.testng.Assert.assertEquals; 26 import static org.w3c.dom.ptests.DOMTestUtil.createNewDocument; 27 28 import javax.xml.parsers.ParserConfigurationException; 29 30 import jaxp.library.JAXPBaseTest; 31 32 import org.testng.annotations.DataProvider; 33 import org.testng.annotations.Test; 34 import org.w3c.dom.DOMImplementation; 35 import org.w3c.dom.Document; 36 import org.w3c.dom.DocumentType; 37 38 /* 39 * @summary Test DomImplementation API 40 */ 41 public class DomImplementationTest extends JAXPBaseTest { 42 /* 43 * Test createDocument method with a namespace uri, qualified name and null 44 * for the doctype 45 */ 46 @Test 47 public void testCreateDocument() throws ParserConfigurationException { 48 final String nsURI = "http://www.document.com"; 49 final String name = "document:localName"; 50 DOMImplementation domImpl = getDOMImplementation(); 51 Document document = domImpl.createDocument(nsURI, name, null); 52 assertEquals(document.getDocumentElement().getNamespaceURI(), nsURI); 53 assertEquals(document.getDocumentElement().getNodeName(), name); 54 } 55 56 /* 57 * Test createDocumentType method with name, public id and system id. 58 */ 59 @Test 60 public void testCreateDocumentType01() throws ParserConfigurationException { 61 final String name = "document:localName"; 62 final String publicId = "pubid"; 63 final String systemId = "sysid"; 64 65 DOMImplementation domImpl = getDOMImplementation(); 66 DocumentType documentType = domImpl.createDocumentType(name, publicId, systemId); 67 verifyDocumentType(documentType, name, publicId, systemId); 68 } 69 70 71 /* 72 * Test createDocument method using a DocumentType, verify the document will 73 * take that Doctype. 74 */ 75 @Test 76 public void testCreateDocumentType02() throws ParserConfigurationException { 77 final String name = "document:localName"; 78 final String publicId = "-//W3C//DTD HTML 4.0 Transitional//EN"; 79 final String systemId = "http://www.w3.org/TR/REC-html40/loose.dtd"; 80 DOMImplementation domImpl = getDOMImplementation(); 81 82 DocumentType documentType = domImpl.createDocumentType(name, publicId, systemId); 83 Document document = domImpl.createDocument("http://www.document.com", "document:localName", documentType); 84 verifyDocumentType(document.getDoctype(), name, publicId, systemId); 85 } 86 87 @DataProvider(name = "feature-supported") 88 public Object[][] getFeatureSupportedList() throws ParserConfigurationException { 89 DOMImplementation impl = getDOMImplementation(); 90 return new Object[][] { 91 { impl, "XML", "2.0", true }, 92 { impl, "HTML", "2.0", false }, 93 { impl, "Views", "2.0", false }, 94 { impl, "StyleSheets", "2.0", false }, 95 { impl, "CSS", "2.0", false }, 96 { impl, "CSS2", "2.0", false }, 97 { impl, "Events", "2.0", true }, 98 { impl, "UIEvents", "2.0", false }, 99 { impl, "MouseEvents", "2.0", false }, 100 { impl, "HTMLEvents", "2.0", false }, 101 { impl, "Traversal", "2.0", true }, 102 { impl, "Range", "2.0", true }, 103 { impl, "Core", "2.0", true }, 104 { impl, "XML", "", true } }; 105 } 106 107 108 @Test(dataProvider = "feature-supported") 109 public void testHasFeature(DOMImplementation impl, String feature, String version, boolean isSupported) { 110 assertEquals(impl.hasFeature(feature,version), isSupported); 111 } 112 113 114 private DOMImplementation getDOMImplementation() throws ParserConfigurationException { 115 return createNewDocument().getImplementation(); 116 } 117 118 119 private void verifyDocumentType(DocumentType documentType, String name, String publicId, String systemId) { 120 assertEquals(documentType.getPublicId(), publicId); 121 assertEquals(documentType.getSystemId(), systemId); 122 assertEquals(documentType.getName(), name); 123 } 124 }