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/documentadoptnode24"; 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 adoptNode method changes the ownerDocument of a node, its children, as well as the 80 attached attribute nodes if there are any. If the node has a parent it is first removed 81 from its parent child list. 82 For Element Nodes, specified attribute nodes of the source element are adopted, Default 83 attributes are discarded and descendants of the source element are recursively adopted. 84 85 Invoke the adoptNode method on a new document with the first code element node of this 86 Document as the source. Verify if the node has been adopted correctly by checking the 87 length of the this elements childNode list before and after. 88 89 * @author IBM 90 * @author Neil Delima 91 * @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#Document3-adoptNode 92 */ 93 function documentadoptnode24() { 94 var success; 95 if(checkInitialization(builder, "documentadoptnode24") != null) return; 96 var doc; 97 var newDoc; 98 var domImpl; 99 var childList; 100 var adoptedNode; 101 var codeElem; 102 var codeElemChildren; 103 var adoptedChildren; 104 var codeElemLen; 105 var adoptedLen; 106 var nullDocType = null; 107 108 109 var docRef = null; 110 if (typeof(this.doc) != 'undefined') { 111 docRef = this.doc; 112 } 113 doc = load(docRef, "doc", "hc_staff"); 114 domImpl = doc.implementation; 115 newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test","dom:test",nullDocType); 116 childList = doc.getElementsByTagNameNS("*","code"); 117 codeElem = childList.item(0); 118 adoptedNode = newDoc.adoptNode(codeElem); 119 codeElemChildren = codeElem.childNodes; 120 121 adoptedChildren = adoptedNode.childNodes; 122 123 codeElemLen = codeElemChildren.length; 124 125 adoptedLen = adoptedChildren.length; 126 127 assertEquals("documentadoptnode24",adoptedLen,codeElemLen); 128 129 } 130 131 132 133 134 function runTest() { 135 documentadoptnode24(); 136 } 137