1356b8defb51adf939e0e8c114c189d95d923f754Steve Block
2356b8defb51adf939e0e8c114c189d95d923f754Steve Block/*
3356b8defb51adf939e0e8c114c189d95d923f754Steve BlockCopyright © 2001-2004 World Wide Web Consortium,
4356b8defb51adf939e0e8c114c189d95d923f754Steve Block(Massachusetts Institute of Technology, European Research Consortium
5356b8defb51adf939e0e8c114c189d95d923f754Steve Blockfor Informatics and Mathematics, Keio University). All
6356b8defb51adf939e0e8c114c189d95d923f754Steve BlockRights Reserved. This work is distributed under the W3C® Software License [1] in the
7356b8defb51adf939e0e8c114c189d95d923f754Steve Blockhope that it will be useful, but WITHOUT ANY WARRANTY; without even
8356b8defb51adf939e0e8c114c189d95d923f754Steve Blockthe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9356b8defb51adf939e0e8c114c189d95d923f754Steve Block
10356b8defb51adf939e0e8c114c189d95d923f754Steve Block[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
11356b8defb51adf939e0e8c114c189d95d923f754Steve Block*/
12356b8defb51adf939e0e8c114c189d95d923f754Steve Block
13356b8defb51adf939e0e8c114c189d95d923f754Steve Block
14356b8defb51adf939e0e8c114c189d95d923f754Steve Block
15356b8defb51adf939e0e8c114c189d95d923f754Steve Block   /**
16356b8defb51adf939e0e8c114c189d95d923f754Steve Block    *  Gets URI that identifies the test.
17356b8defb51adf939e0e8c114c189d95d923f754Steve Block    *  @return uri identifier of test
18356b8defb51adf939e0e8c114c189d95d923f754Steve Block    */
19356b8defb51adf939e0e8c114c189d95d923f754Steve Blockfunction getTargetURI() {
20356b8defb51adf939e0e8c114c189d95d923f754Steve Block      return "http://www.w3.org/2001/DOM-Test-Suite/level1/core/hc_attrinsertbefore7";
21356b8defb51adf939e0e8c114c189d95d923f754Steve Block   }
22356b8defb51adf939e0e8c114c189d95d923f754Steve Block
23356b8defb51adf939e0e8c114c189d95d923f754Steve Blockvar docsLoaded = -1000000;
24356b8defb51adf939e0e8c114c189d95d923f754Steve Blockvar builder = null;
25356b8defb51adf939e0e8c114c189d95d923f754Steve Block
26356b8defb51adf939e0e8c114c189d95d923f754Steve Block//
27356b8defb51adf939e0e8c114c189d95d923f754Steve Block//   This function is called by the testing framework before
28356b8defb51adf939e0e8c114c189d95d923f754Steve Block//      running the test suite.
29356b8defb51adf939e0e8c114c189d95d923f754Steve Block//
30356b8defb51adf939e0e8c114c189d95d923f754Steve Block//   If there are no configuration exceptions, asynchronous
31356b8defb51adf939e0e8c114c189d95d923f754Steve Block//        document loading is started.  Otherwise, the status
32356b8defb51adf939e0e8c114c189d95d923f754Steve Block//        is set to complete and the exception is immediately
33356b8defb51adf939e0e8c114c189d95d923f754Steve Block//        raised when entering the body of the test.
34356b8defb51adf939e0e8c114c189d95d923f754Steve Block//
35356b8defb51adf939e0e8c114c189d95d923f754Steve Blockfunction setUpPage() {
36356b8defb51adf939e0e8c114c189d95d923f754Steve Block   setUpPageStatus = 'running';
37356b8defb51adf939e0e8c114c189d95d923f754Steve Block   try {
38356b8defb51adf939e0e8c114c189d95d923f754Steve Block     //
39356b8defb51adf939e0e8c114c189d95d923f754Steve Block     //   creates test document builder, may throw exception
40356b8defb51adf939e0e8c114c189d95d923f754Steve Block     //
41356b8defb51adf939e0e8c114c189d95d923f754Steve Block     builder = createConfiguredBuilder();
42356b8defb51adf939e0e8c114c189d95d923f754Steve Block       checkFeature("XML", null);
43356b8defb51adf939e0e8c114c189d95d923f754Steve Block
44356b8defb51adf939e0e8c114c189d95d923f754Steve Block      docsLoaded = 0;
45356b8defb51adf939e0e8c114c189d95d923f754Steve Block
46356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var docRef = null;
47356b8defb51adf939e0e8c114c189d95d923f754Steve Block      if (typeof(this.doc) != 'undefined') {
48356b8defb51adf939e0e8c114c189d95d923f754Steve Block        docRef = this.doc;
49356b8defb51adf939e0e8c114c189d95d923f754Steve Block      }
50356b8defb51adf939e0e8c114c189d95d923f754Steve Block      docsLoaded += preload(docRef, "doc", "hc_staff");
51356b8defb51adf939e0e8c114c189d95d923f754Steve Block
52356b8defb51adf939e0e8c114c189d95d923f754Steve Block       if (docsLoaded == 1) {
53356b8defb51adf939e0e8c114c189d95d923f754Steve Block          setUpPageStatus = 'complete';
54356b8defb51adf939e0e8c114c189d95d923f754Steve Block       }
55356b8defb51adf939e0e8c114c189d95d923f754Steve Block    } catch(ex) {
56356b8defb51adf939e0e8c114c189d95d923f754Steve Block    	catchInitializationError(builder, ex);
57356b8defb51adf939e0e8c114c189d95d923f754Steve Block        setUpPageStatus = 'complete';
58356b8defb51adf939e0e8c114c189d95d923f754Steve Block    }
59356b8defb51adf939e0e8c114c189d95d923f754Steve Block}
60356b8defb51adf939e0e8c114c189d95d923f754Steve Block
61356b8defb51adf939e0e8c114c189d95d923f754Steve Block
62356b8defb51adf939e0e8c114c189d95d923f754Steve Block
63356b8defb51adf939e0e8c114c189d95d923f754Steve Block//
64356b8defb51adf939e0e8c114c189d95d923f754Steve Block//   This method is called on the completion of
65356b8defb51adf939e0e8c114c189d95d923f754Steve Block//      each asychronous load started in setUpTests.
66356b8defb51adf939e0e8c114c189d95d923f754Steve Block//
67356b8defb51adf939e0e8c114c189d95d923f754Steve Block//   When every synchronous loaded document has completed,
68356b8defb51adf939e0e8c114c189d95d923f754Steve Block//      the page status is changed which allows the
69356b8defb51adf939e0e8c114c189d95d923f754Steve Block//      body of the test to be executed.
70356b8defb51adf939e0e8c114c189d95d923f754Steve Blockfunction loadComplete() {
71356b8defb51adf939e0e8c114c189d95d923f754Steve Block    if (++docsLoaded == 1) {
72356b8defb51adf939e0e8c114c189d95d923f754Steve Block        setUpPageStatus = 'complete';
73356b8defb51adf939e0e8c114c189d95d923f754Steve Block    }
74356b8defb51adf939e0e8c114c189d95d923f754Steve Block}
75356b8defb51adf939e0e8c114c189d95d923f754Steve Block
76356b8defb51adf939e0e8c114c189d95d923f754Steve Block
77356b8defb51adf939e0e8c114c189d95d923f754Steve Block/**
78356b8defb51adf939e0e8c114c189d95d923f754Steve Block*
79356b8defb51adf939e0e8c114c189d95d923f754Steve BlockAppends a document fragment containing a CDATASection to an attribute.
80356b8defb51adf939e0e8c114c189d95d923f754Steve Block
81356b8defb51adf939e0e8c114c189d95d923f754Steve Block* @author Curt Arnold
82356b8defb51adf939e0e8c114c189d95d923f754Steve Block* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core#ID-637646024
83356b8defb51adf939e0e8c114c189d95d923f754Steve Block* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core#ID-952280727
84356b8defb51adf939e0e8c114c189d95d923f754Steve Block*/
85356b8defb51adf939e0e8c114c189d95d923f754Steve Blockfunction hc_attrinsertbefore7() {
86356b8defb51adf939e0e8c114c189d95d923f754Steve Block   var success;
87356b8defb51adf939e0e8c114c189d95d923f754Steve Block    if(checkInitialization(builder, "hc_attrinsertbefore7") != null) return;
88356b8defb51adf939e0e8c114c189d95d923f754Steve Block    var doc;
89356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var acronymList;
90356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var testNode;
91356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var attributes;
92356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var titleAttr;
93356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var value;
94356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var terNode;
95356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var dayNode;
96356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var docFrag;
97356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var retval;
98356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var firstChild;
99356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var lastChild;
100356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var refChild = null;
101356b8defb51adf939e0e8c114c189d95d923f754Steve Block
102356b8defb51adf939e0e8c114c189d95d923f754Steve Block
103356b8defb51adf939e0e8c114c189d95d923f754Steve Block      var docRef = null;
104356b8defb51adf939e0e8c114c189d95d923f754Steve Block      if (typeof(this.doc) != 'undefined') {
105356b8defb51adf939e0e8c114c189d95d923f754Steve Block        docRef = this.doc;
106356b8defb51adf939e0e8c114c189d95d923f754Steve Block      }
107356b8defb51adf939e0e8c114c189d95d923f754Steve Block      doc = load(docRef, "doc", "hc_staff");
108356b8defb51adf939e0e8c114c189d95d923f754Steve Block      acronymList = doc.getElementsByTagName("acronym");
109356b8defb51adf939e0e8c114c189d95d923f754Steve Block      testNode = acronymList.item(3);
110356b8defb51adf939e0e8c114c189d95d923f754Steve Block      attributes = testNode.attributes;
111356b8defb51adf939e0e8c114c189d95d923f754Steve Block
112356b8defb51adf939e0e8c114c189d95d923f754Steve Block      titleAttr = attributes.getNamedItem("title");
113356b8defb51adf939e0e8c114c189d95d923f754Steve Block      terNode = doc.createTextNode("ter");
114356b8defb51adf939e0e8c114c189d95d923f754Steve Block
115356b8defb51adf939e0e8c114c189d95d923f754Steve Block	if(
116356b8defb51adf939e0e8c114c189d95d923f754Steve Block
117356b8defb51adf939e0e8c114c189d95d923f754Steve Block	(builder.contentType == "text/html")
118356b8defb51adf939e0e8c114c189d95d923f754Steve Block
119356b8defb51adf939e0e8c114c189d95d923f754Steve Block	) {
120356b8defb51adf939e0e8c114c189d95d923f754Steve Block
121356b8defb51adf939e0e8c114c189d95d923f754Steve Block	{
122356b8defb51adf939e0e8c114c189d95d923f754Steve Block		success = false;
123356b8defb51adf939e0e8c114c189d95d923f754Steve Block		try {
124356b8defb51adf939e0e8c114c189d95d923f754Steve Block            dayNode = doc.createCDATASection("day");
125356b8defb51adf939e0e8c114c189d95d923f754Steve Block        }
126356b8defb51adf939e0e8c114c189d95d923f754Steve Block		catch(ex) {
127356b8defb51adf939e0e8c114c189d95d923f754Steve Block      success = (typeof(ex.code) != 'undefined' && ex.code == 9);
128356b8defb51adf939e0e8c114c189d95d923f754Steve Block		}
129356b8defb51adf939e0e8c114c189d95d923f754Steve Block		assertTrue("throw_NOT_SUPPORTED_ERR",success);
130356b8defb51adf939e0e8c114c189d95d923f754Steve Block	}
131356b8defb51adf939e0e8c114c189d95d923f754Steve Block
132356b8defb51adf939e0e8c114c189d95d923f754Steve Block	}
133356b8defb51adf939e0e8c114c189d95d923f754Steve Block
134356b8defb51adf939e0e8c114c189d95d923f754Steve Block		else {
135356b8defb51adf939e0e8c114c189d95d923f754Steve Block			dayNode = doc.createCDATASection("day");
136356b8defb51adf939e0e8c114c189d95d923f754Steve Block      docFrag = doc.createDocumentFragment();
137356b8defb51adf939e0e8c114c189d95d923f754Steve Block      retval = docFrag.appendChild(terNode);
138356b8defb51adf939e0e8c114c189d95d923f754Steve Block      retval = docFrag.appendChild(dayNode);
139356b8defb51adf939e0e8c114c189d95d923f754Steve Block
140356b8defb51adf939e0e8c114c189d95d923f754Steve Block	{
141356b8defb51adf939e0e8c114c189d95d923f754Steve Block		success = false;
142356b8defb51adf939e0e8c114c189d95d923f754Steve Block		try {
143356b8defb51adf939e0e8c114c189d95d923f754Steve Block            retval = titleAttr.insertBefore(docFrag,refChild);
144356b8defb51adf939e0e8c114c189d95d923f754Steve Block        }
145356b8defb51adf939e0e8c114c189d95d923f754Steve Block		catch(ex) {
146356b8defb51adf939e0e8c114c189d95d923f754Steve Block      success = (typeof(ex.code) != 'undefined' && ex.code == 3);
147356b8defb51adf939e0e8c114c189d95d923f754Steve Block		}
148356b8defb51adf939e0e8c114c189d95d923f754Steve Block		assertTrue("throw_HIERARCHY_REQUEST_ERR",success);
149356b8defb51adf939e0e8c114c189d95d923f754Steve Block	}
150356b8defb51adf939e0e8c114c189d95d923f754Steve Block
151356b8defb51adf939e0e8c114c189d95d923f754Steve Block		}
152356b8defb51adf939e0e8c114c189d95d923f754Steve Block
153356b8defb51adf939e0e8c114c189d95d923f754Steve Block}
154356b8defb51adf939e0e8c114c189d95d923f754Steve Block
155356b8defb51adf939e0e8c114c189d95d923f754Steve Block
156356b8defb51adf939e0e8c114c189d95d923f754Steve Block
157356b8defb51adf939e0e8c114c189d95d923f754Steve Block
158356b8defb51adf939e0e8c114c189d95d923f754Steve Blockfunction runTest() {
159356b8defb51adf939e0e8c114c189d95d923f754Steve Block   hc_attrinsertbefore7();
160356b8defb51adf939e0e8c114c189d95d923f754Steve Block}
161