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.Node;
28 import org.w3c.dom.Document;
29 import org.w3c.dom.DocumentFragment;
30 import org.w3c.dom.Element;
31 import org.w3c.dom.DOMException;
32 import org.w3c.dom.Attr;
33 import org.w3c.dom.NodeList;
34 
35 import javax.xml.parsers.DocumentBuilder;
36 
37 /**
38  * The method setPrefix sets the namespace prefix of this node. Note that
39  * setting this attribute, when permitted, changes the nodeName attribute, which
40  * holds the qualified name, as well as the tagName and name attributes of the
41  * Element and Attr interfaces, when applicable.
42  *
43  * Create a new element node with a namespace prefix. Add it to a new
44  * DocumentFragment Node without a prefix. Call setPrefix on the elemen node.
45  * Check if the prefix was set correctly on the element.
46  *
47  * @author IBM
48  * @author Neil Delima
49  * @see <a
50  *      href="http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSPrefix">http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSPrefix</a>
51  */
52 public final class NodeSetPrefix extends DOMTestCase {
53 
54     DOMDocumentBuilderFactory factory;
55 
56     DocumentBuilder builder;
57 
setUp()58     protected void setUp() throws Exception {
59         super.setUp();
60         try {
61             factory = new DOMDocumentBuilderFactory(DOMDocumentBuilderFactory
62                     .getConfiguration1());
63             builder = factory.getBuilder();
64         } catch (Exception e) {
65             fail("Unexpected exception" + e.getMessage());
66         }
67     }
68 
tearDown()69     protected void tearDown() throws Exception {
70         factory = null;
71         builder = null;
72         super.tearDown();
73     }
74 
75     /**
76      * Runs the test case.
77      *
78      * @throws Throwable
79      *             Any uncaught exception causes test to fail
80      */
testSetPrefix1()81     public void testSetPrefix1() throws Throwable {
82         Document doc;
83         DocumentFragment docFragment;
84         Element element;
85         String elementTagName;
86         String elementNodeName;
87 
88         doc = (Document) load("staff", builder);
89         docFragment = doc.createDocumentFragment();
90         element = doc.createElementNS("http://www.w3.org/DOM/Test",
91                 "emp:address");
92         docFragment.appendChild(element);
93         element.setPrefix("dmstc");
94         elementTagName = element.getTagName();
95         elementNodeName = element.getNodeName();
96         assertEquals("nodesetprefix01_tagname", "dmstc:address", elementTagName);
97         assertEquals("nodesetprefix01_nodeName", "dmstc:address",
98                 elementNodeName);
99     }
100 
101 // TODO Fails on JDK. Why?
102 //    public void testSetPrefix2() throws Throwable {
103 //        Document doc;
104 //        Element element;
105 //        Attr attribute;
106 //        Attr newAttribute;
107 //
108 //        NodeList elementList;
109 //        String attrName;
110 //        String newAttrName;
111 //        doc = (Document) load("staffNS", builder);
112 //        elementList = doc.getElementsByTagName("address");
113 //        element = (Element) elementList.item(1);
114 //        newAttribute = doc.createAttributeNS("http://www.w3.org/DOM/Test",
115 //                "test:address");
116 //        element.setAttributeNodeNS(newAttribute);
117 //        newAttribute.setPrefix("dom");
118 //        attribute = element
119 //                .getAttributeNodeNS("http://www.usa.com", "domestic");
120 //        attrName = attribute.getNodeName();
121 //        newAttrName = newAttribute.getNodeName();
122 //        assertEquals("nodesetprefix02_attrName", "dmstc:domestic", attrName);
123 //        assertEquals("nodesetprefix02_newAttrName", "dom:address", newAttrName);
124 //    }
testSetPrefix3()125     public void testSetPrefix3() throws Throwable {
126         Document doc;
127         Element element;
128         doc = (Document) load("staffNS", builder);
129         element = doc.createElement("address");
130 
131         {
132             boolean success = false;
133             try {
134                 element.setPrefix("test");
135             } catch (DOMException ex) {
136                 success = (ex.code == DOMException.NAMESPACE_ERR);
137             }
138             assertTrue("throw_NAMESPACE_ERR", success);
139         }
140     }
141 
142 // Relies on validation, which we don't support.
143 //    public void testSetPrefix4() throws Throwable {
144 //        Document doc;
145 //        Element element;
146 //        Attr attribute;
147 //        NodeList elementList;
148 //        String nullNS = null;
149 //
150 //        doc = (Document) load("staffNS", builder);
151 //        elementList = doc.getElementsByTagName("emp:employee");
152 //        element = (Element) elementList.item(0);
153 //        assertNotNull("empEmployeeNotNull", element);
154 //        attribute = element.getAttributeNodeNS(nullNS, "defaultAttr");
155 //
156 //        {
157 //            boolean success = false;
158 //            try {
159 //                attribute.setPrefix("test");
160 //            } catch (DOMException ex) {
161 //                success = (ex.code == DOMException.NAMESPACE_ERR);
162 //            }
163 //            assertTrue("nodesetprefix04", success);
164 //        }
165 //    }
testSetPrefix5()166     public void testSetPrefix5() throws Throwable {
167         Document doc;
168         Element element;
169         String prefixValue;
170         List<String> prefixValues = new ArrayList<String>();
171         prefixValues.add("_:");
172         prefixValues.add(":0");
173         prefixValues.add(":");
174         prefixValues.add("_::");
175         prefixValues.add("a:0:c");
176 
177         doc = (Document) load("staffNS", builder);
178         element = doc.createElementNS("http://www.w3.org/DOM/Test/L2",
179                 "dom:elem");
180         for (int indexN10050 = 0; indexN10050 < prefixValues.size(); indexN10050++) {
181             prefixValue = (String) prefixValues.get(indexN10050);
182 
183             {
184                 boolean success = false;
185                 try {
186                     element.setPrefix(prefixValue);
187                 } catch (DOMException ex) {
188                     success = (ex.code == DOMException.NAMESPACE_ERR);
189                 }
190                 assertTrue("throw_NAMESPACE_ERR", success);
191             }
192         }
193     }
testSetPrefix6()194     public void testSetPrefix6() throws Throwable {
195         Document doc;
196         Element element;
197         doc = (Document) load("staffNS", builder);
198         element = doc.createElementNS("http://www.w3.org/DOM/Test/L2",
199                 "dom:elem");
200 
201         {
202             boolean success = false;
203             try {
204                 element.setPrefix("xml");
205             } catch (DOMException ex) {
206                 success = (ex.code == DOMException.NAMESPACE_ERR);
207             }
208             assertTrue("throw_NAMESPACE_ERR", success);
209         }
210     }
testSetPrefix7()211     public void testSetPrefix7() throws Throwable {
212         Document doc;
213         Attr attribute;
214         doc = (Document) load("staffNS", builder);
215         attribute = doc.createAttributeNS("http://www.w3.org/DOM/Test/L2",
216                 "abc:elem");
217 
218         {
219             boolean success = false;
220             try {
221                 attribute.setPrefix("xmlns");
222             } catch (DOMException ex) {
223                 success = (ex.code == DOMException.NAMESPACE_ERR);
224             }
225             assertTrue("throw_NAMESPACE_ERR", success);
226         }
227     }
testSetPrefix8()228     public void testSetPrefix8() throws Throwable {
229         Document doc;
230         Element element;
231         NodeList elementList;
232         Attr attribute;
233         doc = (Document) load("staffNS", builder);
234         elementList = doc.getElementsByTagName("employee");
235         element = (Element) elementList.item(0);
236         attribute = element.getAttributeNode("xmlns");
237 
238         {
239             boolean success = false;
240             try {
241                 attribute.setPrefix("xml");
242             } catch (DOMException ex) {
243                 success = (ex.code == DOMException.NAMESPACE_ERR);
244             }
245             assertTrue("throw_NAMESPACE_ERR", success);
246         }
247     }
_testSetPrefix9()248     public void _testSetPrefix9() throws Throwable {
249         Document doc;
250         String value = "#$%&'()@";
251         Element element;
252         doc = (Document) load("staffNS", builder);
253         element = doc.createElementNS("http://www.w3.org/DOM/Test/L2",
254                 "dom:elem");
255 
256         {
257             boolean success = false;
258             try {
259                 element.setPrefix(value);
260             } catch (DOMException ex) {
261                 success = (ex.code == DOMException.INVALID_CHARACTER_ERR);
262             }
263             assertTrue("throw_INVALID_CHARACTER_ERR", success);
264         }
265     }
266 }
267