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/nodeisequalnode11";
     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 
     43       docsLoaded = 0;
     44       
     45       var docRef = null;
     46       if (typeof(this.doc) != 'undefined') {
     47         docRef = this.doc;
     48       }
     49       docsLoaded += preload(docRef, "doc", "hc_staff");
     50         
     51       var dupDocRef = null;
     52       if (typeof(this.dupDoc) != 'undefined') {
     53         dupDocRef = this.dupDoc;
     54       }
     55       docsLoaded += preload(dupDocRef, "dupDoc", "hc_staff");
     56         
     57        if (docsLoaded == 2) {
     58           setUpPageStatus = 'complete';
     59        }
     60     } catch(ex) {
     61     	catchInitializationError(builder, ex);
     62         setUpPageStatus = 'complete';
     63     }
     64 }
     65 
     66 
     67 
     68 //
     69 //   This method is called on the completion of 
     70 //      each asychronous load started in setUpTests.
     71 //
     72 //   When every synchronous loaded document has completed,
     73 //      the page status is changed which allows the
     74 //      body of the test to be executed.
     75 function loadComplete() {
     76     if (++docsLoaded == 2) {
     77         setUpPageStatus = 'complete';
     78     }
     79 }
     80 
     81 
     82 /**
     83 * 
     84 	Retreive the first element node whose localName is "p".  Import it into a new
     85 	Document with deep=false.  Using isEqualNode check if the original and the imported
     86 	Element Node are not equal the child nodes are different.
     87 	Import with deep and the should still be unequal if
     88 	validating since the
     89 	new document does not provide the same default attributes.
     90 	Import it into another instance of the source document
     91 	and then the imported node and the source should be equal.   
     92 
     93 * @author IBM
     94 * @author Neil Delima
     95 * @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#Node3-isEqualNode
     96 * @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=529
     97 */
     98 function nodeisequalnode11() {
     99    var success;
    100     if(checkInitialization(builder, "nodeisequalnode11") != null) return;
    101     var doc;
    102       var domImpl;
    103       var employeeList;
    104       var newDoc;
    105       var dupDoc;
    106       var elem1;
    107       var elem2;
    108       var elem3;
    109       var elem4;
    110       var isEqual;
    111       var nullDocType = null;
    112 
    113       var docElem;
    114       var rootNS;
    115       var rootName;
    116       
    117       var docRef = null;
    118       if (typeof(this.doc) != 'undefined') {
    119         docRef = this.doc;
    120       }
    121       doc = load(docRef, "doc", "hc_staff");
    122       docElem = doc.documentElement;
    123 
    124       rootNS = docElem.namespaceURI;
    125 
    126       rootName = docElem.tagName;
    127 
    128       domImpl = doc.implementation;
    129 newDoc = domImpl.createDocument(rootNS,rootName,nullDocType);
    130       employeeList = doc.getElementsByTagName("p");
    131       elem1 = employeeList.item(0);
    132       elem2 = newDoc.importNode(elem1,false);
    133       isEqual = elem1.isEqualNode(elem2);
    134       assertFalse("nodeisequalnodeFalse11",isEqual);
    135 elem3 = newDoc.importNode(elem1,true);
    136       isEqual = elem1.isEqualNode(elem3);
    137       
    138 	if(
    139 	(getImplementationAttribute("validating") == true)
    140 	) {
    141 	assertFalse("deepImportNoDTD",isEqual);
    142 
    143 	}
    144 	
    145       var dupDocRef = null;
    146       if (typeof(this.dupDoc) != 'undefined') {
    147         dupDocRef = this.dupDoc;
    148       }
    149       dupDoc = load(dupDocRef, "dupDoc", "hc_staff");
    150       elem4 = dupDoc.importNode(elem1,true);
    151       isEqual = elem1.isEqualNode(elem4);
    152       assertTrue("deepImportSameDTD",isEqual);
    153 
    154 }
    155 
    156 
    157 
    158 
    159 function runTest() {
    160    nodeisequalnode11();
    161 }
    162