Home | History | Annotate | Download | only in dom
      1 /*
      2  This Java source file was generated by test-to-java.xsl
      3  and is a derived work from the source document.
      4  The source document contained the following notice:
      5 
      6 
      7 
      8  Copyright (c) 2001 World Wide Web Consortium,
      9  (Massachusetts Institute of Technology, Institut National de
     10  Recherche en Informatique et en Automatique, Keio University).  All
     11  Rights Reserved.  This program is distributed under the W3C's Software
     12  Intellectual Property License.  This program is distributed in the
     13  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
     14  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     15  PURPOSE.
     16 
     17  See W3C License http://www.w3.org/Consortium/Legal/ for more details.
     18 
     19 
     20  */
     21 
     22 package tests.org.w3c.dom;
     23 
     24 import java.util.ArrayList;
     25 import java.util.List;
     26 
     27 import org.w3c.dom.DOMImplementation;
     28 import org.w3c.dom.Document;
     29 import org.w3c.dom.DOMException;
     30 import org.w3c.dom.DocumentType;
     31 
     32 import javax.xml.parsers.DocumentBuilder;
     33 
     34 /**
     35  * The "createDocumentType(qualifiedName,publicId,systemId)" method for a
     36  * DOMImplementation should raise NAMESPACE_ERR DOMException if qualifiedName is
     37  * malformed.
     38  *
     39  * Retrieve the DOMImplementation on the XMLNS Document. Invoke method
     40  * createDocumentType(qualifiedName,publicId,systemId) on the retrieved
     41  * DOMImplementation with qualifiedName being the literal string
     42  * "prefix::local", publicId as "STAFF", and systemId as "staff". Method should
     43  * raise NAMESPACE_ERR DOMException.
     44  *
     45  * @author NIST
     46  * @author Mary Brady
     47  * @see <a
     48  *      href="http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])">http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])</a>
     49  * @see <a
     50  *      href="http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocType">http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocType</a>
     51  * @see <a
     52  *      href="http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Level-2-Core-DOM-createDocType')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])">http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Level-2-Core-DOM-createDocType')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])</a>
     53  */
     54 public final class CreateDocumentType extends DOMTestCase {
     55 
     56     DOMDocumentBuilderFactory factory;
     57 
     58     DocumentBuilder builder;
     59 
     60     protected void setUp() throws Exception {
     61         super.setUp();
     62         try {
     63             factory = new DOMDocumentBuilderFactory(DOMDocumentBuilderFactory
     64                     .getConfiguration1());
     65             builder = factory.getBuilder();
     66         } catch (Exception e) {
     67             fail("Unexpected exception" + e.getMessage());
     68         }
     69     }
     70 
     71     protected void tearDown() throws Exception {
     72         factory = null;
     73         builder = null;
     74         super.tearDown();
     75     }
     76 
     77     /**
     78      * Runs the test case.
     79      *
     80      * @throws Throwable
     81      *             Any uncaught exception causes test to fail
     82      */
     83     public void testCreateDocumentType1() throws Throwable {
     84         String publicId = "STAFF";
     85         String systemId = "staff.xml";
     86         String malformedName = "prefix::local";
     87         Document doc;
     88         DOMImplementation domImpl;
     89 
     90         doc = (Document) load("staffNS", builder);
     91         domImpl = doc.getImplementation();
     92 
     93         {
     94             boolean success = false;
     95             try {
     96                 domImpl.createDocumentType(malformedName, publicId, systemId);
     97             } catch (DOMException ex) {
     98                 success = (ex.code == DOMException.NAMESPACE_ERR);
     99             }
    100             assertTrue("throw_NAMESPACE_ERR", success);
    101         }
    102     }
    103     public void testCreateDocumentType2() throws Throwable {
    104         String publicId = "http://www.localhost.com/";
    105         String systemId = "myDoc.dtd";
    106         String qualifiedName;
    107         Document doc;
    108 
    109         DOMImplementation domImpl;
    110         List<String> illegalQNames = new ArrayList<String>();
    111         illegalQNames.add("edi:{");
    112         illegalQNames.add("edi:}");
    113         illegalQNames.add("edi:~");
    114         illegalQNames.add("edi:'");
    115         illegalQNames.add("edi:!");
    116         illegalQNames.add("edi:@");
    117         illegalQNames.add("edi:#");
    118         illegalQNames.add("edi:$");
    119         illegalQNames.add("edi:%");
    120         illegalQNames.add("edi:^");
    121         illegalQNames.add("edi:&");
    122         illegalQNames.add("edi:*");
    123         illegalQNames.add("edi:(");
    124         illegalQNames.add("edi:)");
    125         illegalQNames.add("edi:+");
    126         illegalQNames.add("edi:=");
    127         illegalQNames.add("edi:[");
    128         illegalQNames.add("edi:]");
    129         illegalQNames.add("edi:\\");
    130         illegalQNames.add("edi:/");
    131         illegalQNames.add("edi:;");
    132         illegalQNames.add("edi:`");
    133         illegalQNames.add("edi:<");
    134         illegalQNames.add("edi:>");
    135         illegalQNames.add("edi:,");
    136         illegalQNames.add("edi:a ");
    137         illegalQNames.add("edi:\"");
    138 
    139         doc = (Document) load("staffNS", builder);
    140         for (int indexN1009A = 0; indexN1009A < illegalQNames.size(); indexN1009A++) {
    141             qualifiedName = (String) illegalQNames.get(indexN1009A);
    142             domImpl = doc.getImplementation();
    143 
    144             {
    145                 boolean success = false;
    146                 try {
    147                     domImpl.createDocumentType(qualifiedName, publicId,
    148                             systemId);
    149                 } catch (DOMException ex) {
    150                     success = (ex.code == DOMException.INVALID_CHARACTER_ERR);
    151                 }
    152                 assertTrue("throw_INVALID_CHARACTER_ERR", success);
    153             }
    154         }
    155     }
    156     public void testCreateDocumentType3() throws Throwable {
    157 
    158         String qualifiedName = "prefix:myDoc";
    159         String publicId = "http://www.localhost.com";
    160         String systemId = "myDoc.dtd";
    161         Document doc;
    162         DOMImplementation domImpl;
    163         DocumentType newType = null;
    164 
    165         String nodeName;
    166         String nodeValue;
    167         doc = (Document) load("staffNS", builder);
    168         domImpl = doc.getImplementation();
    169         newType = domImpl.createDocumentType(qualifiedName, publicId, systemId);
    170         nodeName = newType.getNodeName();
    171         assertEquals("nodeName", "prefix:myDoc", nodeName);
    172         nodeValue = newType.getNodeValue();
    173         assertNull("nodeValue", nodeValue);
    174     }
    175     public void testCreateDocumentType4() throws Throwable {
    176         String publicId = "http://www.example.com/";
    177         String systemId = "myDoc.dtd";
    178 
    179         DOMImplementation domImpl;
    180         domImpl = builder.getDOMImplementation();
    181 
    182         {
    183             boolean success = false;
    184             try {
    185                 domImpl.createDocumentType("", publicId, systemId);
    186             } catch (DOMException ex) {
    187                 success = (ex.code == DOMException.NAMESPACE_ERR);
    188             }
    189             assertTrue("throw_NAMESPACE_ERR", success);
    190         }
    191     }
    192 }
    193