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_attrappendchild4";
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 BlockAttempt to append a CDATASection to an attribute which should result
80033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockin a HIERARCHY_REQUEST_ERR.
81033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
82033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block* @author Curt Arnold
83033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core#ID-637646024
84033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core#ID-184E7107
85033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block*/
86033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockfunction hc_attrappendchild4() {
87033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block   var success;
88033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block    if(checkInitialization(builder, "hc_attrappendchild4") != null) return;
89033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block    var doc;
90033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      var acronymList;
91033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      var testNode;
92033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      var attributes;
93033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      var titleAttr;
94033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      var value;
95033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      var textNode;
96033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      var retval;
97033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      var lastChild;
98033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
99033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      var docRef = null;
100033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      if (typeof(this.doc) != 'undefined') {
101033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block        docRef = this.doc;
102033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      }
103033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      doc = load(docRef, "doc", "hc_staff");
104033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      acronymList = doc.getElementsByTagName("acronym");
105033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      testNode = acronymList.item(3);
106033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      attributes = testNode.attributes;
107033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
108033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      titleAttr = attributes.getNamedItem("title");
109033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
110033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block	if(
111033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
112033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block	(builder.contentType == "text/html")
113033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
114033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block	) {
115033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
116033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block	{
117033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		success = false;
118033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		try {
119033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block            textNode = doc.createCDATASection("terday");
120033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block        }
121033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		catch(ex) {
122033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      success = (typeof(ex.code) != 'undefined' && ex.code == 9);
123033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		}
124033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		assertTrue("throw_NOT_SUPPORTED_ERR",success);
125033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block	}
126033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
127033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block	}
128033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
129033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		else {
130033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block			textNode = doc.createCDATASection("terday");
131033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
132033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block	{
133033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		success = false;
134033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		try {
135033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block            retval = titleAttr.appendChild(textNode);
136033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block        }
137033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		catch(ex) {
138033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block      success = (typeof(ex.code) != 'undefined' && ex.code == 3);
139033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		}
140033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		assertTrue("throw_HIERARCHY_REQUEST_ERR",success);
141033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block	}
142033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
143033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block		}
144033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
145033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block}
146033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
147033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
148033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
149033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block
150033f36aa7125b327c65c4bc23d694ce5274f8224Steve Blockfunction runTest() {
151033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block   hc_attrappendchild4();
152033f36aa7125b327c65c4bc23d694ce5274f8224Steve Block}
153