1033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 2033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block/* 3033f36aa7125b327c65c4bc23d694ce5274f8224Steve BlockCopyright © 2001-2004 World Wide Web Consortium, 4033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block(Massachusetts Institute of Technology, European Research Consortium 5033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockfor Informatics and Mathematics, Keio University). All 6033f36aa7125b327c65c4bc23d694ce5274f8224Steve BlockRights Reserved. This work is distributed under the W3C® Software License [1] in the 7033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockhope that it will be useful, but WITHOUT ANY WARRANTY; without even 8033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockthe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 10033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 11033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block*/ 12033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 13033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 14033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 15033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block /** 16033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block * Gets URI that identifies the test. 17033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block * @return uri identifier of test 18033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block */ 19033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockfunction getTargetURI() { 20033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block return "http://www.w3.org/2001/DOM-Test-Suite/level1/core/hc_attrinsertbefore7"; 21033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 22033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 23033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockvar docsLoaded = -1000000; 24033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockvar builder = null; 25033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 26033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// 27033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// This function is called by the testing framework before 28033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// running the test suite. 29033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// 30033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// If there are no configuration exceptions, asynchronous 31033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// document loading is started. Otherwise, the status 32033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// is set to complete and the exception is immediately 33033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// raised when entering the body of the test. 34033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// 35033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockfunction setUpPage() { 36033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block setUpPageStatus = 'running'; 37033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block try { 38033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block // 39033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block // creates test document builder, may throw exception 40033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block // 41033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block builder = createConfiguredBuilder(); 42033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block checkFeature("XML", null); 43033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 44033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block docsLoaded = 0; 45033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 46033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var docRef = null; 47033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block if (typeof(this.doc) != 'undefined') { 48033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block docRef = this.doc; 49033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 50033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block docsLoaded += preload(docRef, "doc", "hc_staff"); 51033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 52033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block if (docsLoaded == 1) { 53033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block setUpPageStatus = 'complete'; 54033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 55033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } catch(ex) { 56033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block catchInitializationError(builder, ex); 57033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block setUpPageStatus = 'complete'; 58033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 59033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block} 60033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 61033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 62033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 63033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// 64033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// This method is called on the completion of 65033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// each asychronous load started in setUpTests. 66033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// 67033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// When every synchronous loaded document has completed, 68033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// the page status is changed which allows the 69033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block// body of the test to be executed. 70033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockfunction loadComplete() { 71033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block if (++docsLoaded == 1) { 72033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block setUpPageStatus = 'complete'; 73033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 74033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block} 75033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 76033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 77033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block/** 78033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block* 79033f36aa7125b327c65c4bc23d694ce5274f8224Steve BlockAppends a document fragment containing a CDATASection to an attribute. 80033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 81033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block* @author Curt Arnold 82033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core#ID-637646024 83033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core#ID-952280727 84033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block*/ 85033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockfunction hc_attrinsertbefore7() { 86033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var success; 87033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block if(checkInitialization(builder, "hc_attrinsertbefore7") != null) return; 88033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var doc; 89033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var acronymList; 90033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var testNode; 91033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var attributes; 92033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var titleAttr; 93033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var value; 94033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var terNode; 95033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var dayNode; 96033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var docFrag; 97033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var retval; 98033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var firstChild; 99033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var lastChild; 100033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var refChild = null; 101033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 102033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 103033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block var docRef = null; 104033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block if (typeof(this.doc) != 'undefined') { 105033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block docRef = this.doc; 106033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 107033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block doc = load(docRef, "doc", "hc_staff"); 108033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block acronymList = doc.getElementsByTagName("acronym"); 109033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block testNode = acronymList.item(3); 110033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block attributes = testNode.attributes; 111033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 112033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block titleAttr = attributes.getNamedItem("title"); 113033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block terNode = doc.createTextNode("ter"); 114033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 115033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block if( 116033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 117033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block (builder.contentType == "text/html") 118033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 119033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block ) { 120033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 121033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block { 122033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block success = false; 123033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block try { 124033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block dayNode = doc.createCDATASection("day"); 125033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 126033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block catch(ex) { 127033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block success = (typeof(ex.code) != 'undefined' && ex.code == 9); 128033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 129033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block assertTrue("throw_NOT_SUPPORTED_ERR",success); 130033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 131033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 132033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 133033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 134033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block else { 135033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block dayNode = doc.createCDATASection("day"); 136033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block docFrag = doc.createDocumentFragment(); 137033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block retval = docFrag.appendChild(terNode); 138033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block retval = docFrag.appendChild(dayNode); 139033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 140033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block { 141033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block success = false; 142033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block try { 143033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block retval = titleAttr.insertBefore(docFrag,refChild); 144033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 145033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block catch(ex) { 146033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block success = (typeof(ex.code) != 'undefined' && ex.code == 3); 147033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 148033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block assertTrue("throw_HIERARCHY_REQUEST_ERR",success); 149033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 150033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 151033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block } 152033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 153033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block} 154033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 155033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 156033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 157033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block 158033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockfunction runTest() { 159033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block hc_attrinsertbefore7(); 160033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block} 161