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