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/nodereplacechild01";
     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("namespaceAware", true);
     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 	The method replaceChild replaces the child node oldChild with newChild in the list of 
     80 	children, and returns the oldChild node.
     81       
     82 
     83 	Using replaceChild on this Document node attempt to replace this Document node with itself
     84 	and verify if a HIERARCHY_REQUEST_ERR error or a NOT_FOUND_ERR (since oldChild
     85         is not a child of this node) is thrown.  
     86 
     87 * @author IBM
     88 * @author Neil Delima
     89 * @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#ID-785887307
     90 */
     91 function nodereplacechild01() {
     92    var success;
     93     if(checkInitialization(builder, "nodereplacechild01") != null) return;
     94     var doc;
     95       var replaced;
     96       
     97       var docRef = null;
     98       if (typeof(this.doc) != 'undefined') {
     99         docRef = this.doc;
    100       }
    101       doc = load(docRef, "doc", "hc_staff");
    102       
    103       try {
    104       replaced = doc.replaceChild(doc,doc);
    105       
    106       } catch (ex) {
    107 		  if (typeof(ex.code) != 'undefined') {      
    108        switch(ex.code) {
    109        case /* NOT_FOUND_ERR */ 8 :
    110        break;
    111       case /* HIERARCHY_REQUEST_ERR */ 3 :
    112        break;
    113           default:
    114           throw ex;
    115           }
    116        } else { 
    117        throw ex;
    118         }
    119          }
    120         
    121 }
    122 
    123 
    124 
    125 
    126 function runTest() {
    127    nodereplacechild01();
    128 }
    129