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