Home | History | Annotate | Download | only in dom
      1 package tests.org.w3c.dom;
      2 
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 
      6 import org.w3c.dom.Element;
      7 import org.w3c.dom.Attr;
      8 import org.w3c.dom.Document;
      9 import org.w3c.dom.NodeList;
     10 import org.w3c.dom.DOMException;
     11 import org.w3c.dom.Node;
     12 
     13 import javax.xml.parsers.DocumentBuilder;
     14 
     15 /**
     16  * The method setAttributeNS adds a new attribute. Create a new element and add
     17  * a new attribute node to it using the setAttributeNS method. Check if the
     18  * attribute was correctly set by invoking the getAttributeNodeNS method and
     19  * checking the nodeName and nodeValue of the returned nodes.
     20  *
     21  * @author IBM
     22  * @author Neil Delima
     23  * @see <a
     24  *      href="http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS">http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS</a>
     25  */
     26 public final class ElementSetAttributeNS extends DOMTestCase {
     27 
     28     DOMDocumentBuilderFactory factory;
     29 
     30     DocumentBuilder builder;
     31 
     32     protected void setUp() throws Exception {
     33         super.setUp();
     34         try {
     35             factory = new DOMDocumentBuilderFactory(DOMDocumentBuilderFactory
     36                     .getConfiguration2());
     37             builder = factory.getBuilder();
     38         } catch (Exception e) {
     39             fail("Unexpected exception" + e.getMessage());
     40         }
     41     }
     42 
     43     protected void tearDown() throws Exception {
     44         factory = null;
     45         builder = null;
     46         super.tearDown();
     47     }
     48 
     49     /**
     50      * Runs the test case.
     51      *
     52      * @throws Throwable
     53      *             Any uncaught exception causes test to fail
     54      */
     55     public void testSetAttributeNS1() throws Throwable {
     56         Document doc;
     57         Element element;
     58         Attr attribute;
     59         String attrName;
     60         String attrValue;
     61         doc = (Document) load("staff", builder);
     62         element = doc.createElementNS("http://www.w3.org/DOM", "dom:elem");
     63         element.setAttributeNS("http://www.w3.org/DOM/Test/setAttributeNS",
     64                 "attr", "value");
     65         attribute = element.getAttributeNodeNS(
     66                 "http://www.w3.org/DOM/Test/setAttributeNS", "attr");
     67         attrName = attribute.getNodeName();
     68         attrValue = attribute.getNodeValue();
     69         assertEquals("elementsetattributens01_attrName", "attr", attrName);
     70         assertEquals("elementsetattributens01_attrValue", "value", attrValue);
     71     }
     72     public void testSetAttributeNS2() throws Throwable {
     73         Document doc;
     74         Element element;
     75         Attr attribute;
     76         NodeList elementList;
     77         String attrName;
     78         String attrValue;
     79         doc = (Document) load("staff", builder);
     80         elementList = doc.getElementsByTagNameNS("*", "address");
     81         element = (Element) elementList.item(0);
     82         element.setAttributeNS("http://www.w3.org/DOM/Test/setAttributeNS",
     83                 "this:street", "Silver Street");
     84         attribute = element.getAttributeNodeNS(
     85                 "http://www.w3.org/DOM/Test/setAttributeNS", "street");
     86         attrName = attribute.getNodeName();
     87         attrValue = attribute.getNodeValue();
     88         assertEquals("elementsetattributens02_attrName", "this:street",
     89                 attrName);
     90         assertEquals("elementsetattributens02_attrValue", "Silver Street",
     91                 attrValue);
     92     }
     93     public void testSetAttributeNS3() throws Throwable {
     94         Document doc;
     95         Element element;
     96         Attr attribute;
     97         NodeList elementList;
     98         String attrName;
     99         String attrValue;
    100         doc = (Document) load("staffNS", builder);
    101         elementList = doc.getElementsByTagName("emp:employee");
    102         element = (Element) elementList.item(0);
    103         assertNotNull("empEmployeeNotNull", element);
    104         element.setAttributeNS("http://www.w3.org/DOM/Test/1", "defaultAttr",
    105                 "default1");
    106         element.setAttributeNS("http://www.w3.org/DOM/Test/2", "defaultAttr",
    107                 "default2");
    108         attribute = element.getAttributeNodeNS("http://www.w3.org/DOM/Test/1",
    109                 "defaultAttr");
    110         attrName = attribute.getNodeName();
    111         attrValue = attribute.getNodeValue();
    112         assertEquals("elementsetattributens03_attrName", "defaultAttr",
    113                 attrName);
    114         assertEquals("elementsetattributens03_attrValue", "default1", attrValue);
    115     }
    116     public void testSetAttributeNS4() throws Throwable {
    117         Document doc;
    118         Element element;
    119         String qualifiedName;
    120         List<String> qualifiedNames = new ArrayList<String>();
    121         qualifiedNames.add("/");
    122         qualifiedNames.add("//");
    123         qualifiedNames.add("\\");
    124         qualifiedNames.add(";");
    125         qualifiedNames.add("&");
    126         qualifiedNames.add("*");
    127         qualifiedNames.add("]]");
    128         qualifiedNames.add(">");
    129         qualifiedNames.add("<");
    130 
    131         doc = (Document) load("staffNS", builder);
    132         element = doc.createElementNS("http://www.w3.org/DOM/Test/L2",
    133                 "dom:elem");
    134         for (int indexN10058 = 0; indexN10058 < qualifiedNames.size(); indexN10058++) {
    135             qualifiedName = (String) qualifiedNames.get(indexN10058);
    136 
    137             {
    138                 boolean success = false;
    139                 try {
    140                     element.setAttributeNS("http://www.w3.org/DOM/Test/L2",
    141                             qualifiedName, "test");
    142                 } catch (DOMException ex) {
    143                     success = (ex.code == DOMException.INVALID_CHARACTER_ERR);
    144                 }
    145                 assertTrue("elementsetattributens04", success);
    146             }
    147         }
    148     }
    149     public void testSetAttributeNS5() throws Throwable {
    150         Document doc;
    151         Element element;
    152         String nullNS = null;
    153 
    154         doc = (Document) load("staffNS", builder);
    155         element = doc.createElementNS("http://www.w3.org/DOM/Test/L2",
    156                 "dom:elem");
    157 
    158         {
    159             boolean success = false;
    160             try {
    161                 element.setAttributeNS(nullNS, "dom:root", "test");
    162             } catch (DOMException ex) {
    163                 success = (ex.code == DOMException.NAMESPACE_ERR);
    164             }
    165             assertTrue("elementsetattributens05", success);
    166         }
    167     }
    168     public void testSetAttributeNS8() throws Throwable {
    169         Document doc;
    170         Element element;
    171         doc = (Document) load("staffNS", builder);
    172         element = doc.createElementNS("http://www.w3.org/DOMTest/level2",
    173                 "dom:elem");
    174 
    175         {
    176             boolean success = false;
    177             try {
    178                 element.setAttributeNS("http://www.w3.org/DOMTest/level2",
    179                         "xmlns", "test");
    180             } catch (DOMException ex) {
    181                 success = (ex.code == DOMException.NAMESPACE_ERR);
    182             }
    183             assertTrue("elementsetattributens08_Err1", success);
    184         }
    185 
    186         {
    187             boolean success = false;
    188             try {
    189                 element.setAttributeNS("http://www.w3.org/DOMTest/level2",
    190                         "xmlns:root", "test");
    191             } catch (DOMException ex) {
    192                 success = (ex.code == DOMException.NAMESPACE_ERR);
    193             }
    194             assertTrue("elementsetattributens08_Err2", success);
    195         }
    196     }
    197     public void testSetAttributeNSURINull() throws Throwable {
    198           String namespaceURI = null;
    199 
    200           String qualifiedName = "emp:qualifiedName";
    201           Document doc;
    202           NodeList elementList;
    203           Node testAddr;
    204           doc = (Document) load("staff", builder);
    205           elementList = doc.getElementsByTagName("employee");
    206           testAddr = elementList.item(0);
    207 
    208           {
    209              boolean success = false;
    210              try {
    211                 ((Element) /*Node */testAddr).setAttributeNS(namespaceURI, qualifiedName, "newValue");
    212               } catch (DOMException ex) {
    213                 success = (ex.code == DOMException.NAMESPACE_ERR);
    214              }
    215              assertTrue("throw_NAMESPACE_ERR", success);
    216           }
    217     }
    218 }
    219