Home | History | Annotate | Download | only in core
      1 
      2 /*
      3 Copyright  2001-2004 World Wide Web Consortium, 
      4 (Massachusetts Institute of Technology, European Research Consortium 
      5 for Informatics and Mathematics, Keio University). All 
      6 Rights Reserved. This work is distributed under the W3C Software License [1] in the 
      7 hope that it will be useful, but WITHOUT ANY WARRANTY; without even 
      8 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
      9 
     10 [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
     11 */
     12 
     13 
     14 
     15    /**
     16     *  Gets URI that identifies the test.
     17     *  @return uri identifier of test
     18     */
     19 function getTargetURI() {
     20       return "http://www.w3.org/2001/DOM-Test-Suite/level3/core/noderemovechild31";
     21    }
     22 
     23 var docsLoaded = -1000000;
     24 var builder = null;
     25 
     26 //
     27 //   This function is called by the testing framework before
     28 //      running the test suite.
     29 //
     30 //   If there are no configuration exceptions, asynchronous
     31 //        document loading is started.  Otherwise, the status
     32 //        is set to complete and the exception is immediately
     33 //        raised when entering the body of the test.
     34 //
     35 function setUpPage() {
     36    setUpPageStatus = 'running';
     37    try {
     38      //
     39      //   creates test document builder, may throw exception
     40      //
     41      builder = createConfiguredBuilder();
     42        setImplementationAttribute("expandEntityReferences", false);
     43 
     44       docsLoaded = 0;
     45       
     46       var docRef = null;
     47       if (typeof(this.doc) != 'undefined') {
     48         docRef = this.doc;
     49       }
     50       docsLoaded += preload(docRef, "doc", "hc_staff");
     51         
     52        if (docsLoaded == 1) {
     53           setUpPageStatus = 'complete';
     54        }
     55     } catch(ex) {
     56     	catchInitializationError(builder, ex);
     57         setUpPageStatus = 'complete';
     58     }
     59 }
     60 
     61 
     62 
     63 //
     64 //   This method is called on the completion of 
     65 //      each asychronous load started in setUpTests.
     66 //
     67 //   When every synchronous loaded document has completed,
     68 //      the page status is changed which allows the
     69 //      body of the test to be executed.
     70 function loadComplete() {
     71     if (++docsLoaded == 1) {
     72         setUpPageStatus = 'complete';
     73     }
     74 }
     75 
     76 
     77 /**
     78 * 
     79 	Using removeChild on a default Attribute node attempt to remove its EntityReference child node and
     80 	and verify the name of the returned node that was removed.  Now attempt the reverse
     81 	and verify if a NO_MODIFICATION_ALLOWED_ERR or NOT_FOUND_ERR is thrown.
     82 	Then remove an child of the entity reference and expect a NO_MODIFICATION_ALLOWED_ERR.
     83 
     84 * @author IBM
     85 * @author Neil Delima
     86 * @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#ID-1734834066
     87 */
     88 function noderemovechild31() {
     89    var success;
     90     if(checkInitialization(builder, "noderemovechild31") != null) return;
     91     var doc;
     92       var parentList;
     93       var attrsMap;
     94       var parent;
     95       var child;
     96       var entRef;
     97       var elem;
     98       var removed;
     99       var removedNode;
    100       var removedName;
    101       var appendedChild;
    102       var entRefChild;
    103       
    104       var docRef = null;
    105       if (typeof(this.doc) != 'undefined') {
    106         docRef = this.doc;
    107       }
    108       doc = load(docRef, "doc", "hc_staff");
    109       parentList = doc.getElementsByTagName("acronym");
    110       elem = parentList.item(3);
    111       attrsMap = elem.attributes;
    112 
    113       parent = attrsMap.getNamedItem("class");
    114       entRef = doc.createEntityReference("delta");
    115       appendedChild = parent.appendChild(entRef);
    116       child = parent.lastChild;
    117 
    118       removed = parent.removeChild(child);
    119       removedName = removed.nodeName;
    120 
    121       assertEquals("noderemovechild31","delta",removedName);
    122        
    123       try {
    124       removedNode = child.removeChild(parent);
    125       fail("throw_DOMException");
    126      
    127       } catch (ex) {
    128 		  if (typeof(ex.code) != 'undefined') {      
    129        switch(ex.code) {
    130        case /* NO_MODIFICATION_ALLOWED_ERR */ 7 :
    131        break;
    132       case /* NOT_FOUND_ERR */ 8 :
    133        break;
    134           default:
    135           throw ex;
    136           }
    137        } else { 
    138        throw ex;
    139         }
    140          }
    141         entRefChild = child.firstChild;
    142 
    143       
    144 	if(
    145 	
    146 	(entRefChild != null)
    147 
    148 	) {
    149 	
    150 	{
    151 		success = false;
    152 		try {
    153             removedNode = child.removeChild(entRefChild);
    154         }
    155 		catch(ex) {
    156       success = (typeof(ex.code) != 'undefined' && ex.code == 7);
    157 		}
    158 		assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR",success);
    159 	}
    160 
    161 	}
    162 	
    163 }
    164 
    165 
    166 
    167 
    168 function runTest() {
    169    noderemovechild31();
    170 }
    171