1
2/*
3Copyright é 2001-2004 World Wide Web Consortium,
4(Massachusetts Institute of Technology, European Research Consortium
5for Informatics and Mathematics, Keio University). All
6Rights Reserved. This work is distributed under the W3Cî Software License [1] in the
7hope that it will be useful, but WITHOUT ANY WARRANTY; without even
8the 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    */
19function getTargetURI() {
20      return "http://www.w3.org/2001/DOM-Test-Suite/level3/core/noderemovechild21";
21   }
22
23var docsLoaded = -1000000;
24var 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//
35function setUpPage() {
36   setUpPageStatus = 'running';
37   try {
38     //
39     //   creates test document builder, may throw exception
40     //
41     builder = createConfiguredBuilder();
42
43      docsLoaded = 0;
44
45      var docRef = null;
46      if (typeof(this.doc) != 'undefined') {
47        docRef = this.doc;
48      }
49      docsLoaded += preload(docRef, "doc", "hc_staff");
50
51       if (docsLoaded == 1) {
52          setUpPageStatus = 'complete';
53       }
54    } catch(ex) {
55    	catchInitializationError(builder, ex);
56        setUpPageStatus = 'complete';
57    }
58}
59
60
61
62//
63//   This method is called on the completion of
64//      each asychronous load started in setUpTests.
65//
66//   When every synchronous loaded document has completed,
67//      the page status is changed which allows the
68//      body of the test to be executed.
69function loadComplete() {
70    if (++docsLoaded == 1) {
71        setUpPageStatus = 'complete';
72    }
73}
74
75
76/**
77*
78	Using removeChild on a new Element node attempt to remove a new Element child
79	and verify the name of the returned node that was removed.  Now append the parent
80	to the documentElement and attempt to remove the child using removeChild on the
81	documentElement and verify if a NOT_FOUND_ERR is thrown.
82
83* @author IBM
84* @author Neil Delima
85* @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#ID-1734834066
86*/
87function noderemovechild21() {
88   var success;
89    if(checkInitialization(builder, "noderemovechild21") != null) return;
90    var doc;
91      var docElem;
92      var parent;
93      var child;
94      var removed;
95      var removedName;
96      var removedNode;
97      var appendedChild;
98
99      var docRef = null;
100      if (typeof(this.doc) != 'undefined') {
101        docRef = this.doc;
102      }
103      doc = load(docRef, "doc", "hc_staff");
104      docElem = doc.documentElement;
105
106      parent = doc.createElementNS("http://www.w3.org/1999/xhtml","dom3:p");
107      child = doc.createElementNS("http://www.w3.org/1999/xhtml","dom3:br");
108      appendedChild = parent.appendChild(child);
109      appendedChild = docElem.appendChild(parent);
110      removed = parent.removeChild(child);
111      removedName = removed.nodeName;
112
113      assertEquals("noderemovechild21","dom3:br",removedName);
114
115	{
116		success = false;
117		try {
118            removedNode = docElem.removeChild(child);
119        }
120		catch(ex) {
121      success = (typeof(ex.code) != 'undefined' && ex.code == 8);
122		}
123		assertTrue("throw_NOT_FOUND_ERR",success);
124	}
125
126}
127
128
129
130
131function runTest() {
132   noderemovechild21();
133}
134