1c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
2c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block/*
3c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockCopyright © 2001-2004 World Wide Web Consortium,
4c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block(Massachusetts Institute of Technology, European Research Consortium
5c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfor Informatics and Mathematics, Keio University). All
6c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlockRights Reserved. This work is distributed under the W3C® Software License [1] in the
7c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockhope that it will be useful, but WITHOUT ANY WARRANTY; without even
8c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockthe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
10c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
11c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block*/
12c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
13c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
14c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
15c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block   /**
16c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    *  Gets URI that identifies the test.
17c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    *  @return uri identifier of test
18c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    */
19c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction getTargetURI() {
20c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      return "http://www.w3.org/2001/DOM-Test-Suite/level3/core/nodeisequalnode11";
21c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block   }
22c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
23c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockvar docsLoaded = -1000000;
24c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockvar builder = null;
25c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
26c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//
27c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//   This function is called by the testing framework before
28c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//      running the test suite.
29c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//
30c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//   If there are no configuration exceptions, asynchronous
31c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//        document loading is started.  Otherwise, the status
32c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//        is set to complete and the exception is immediately
33c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//        raised when entering the body of the test.
34c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//
35c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction setUpPage() {
36c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block   setUpPageStatus = 'running';
37c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block   try {
38c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block     //
39c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block     //   creates test document builder, may throw exception
40c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block     //
41c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block     builder = createConfiguredBuilder();
42c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
43c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      docsLoaded = 0;
44c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
45c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var docRef = null;
46c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      if (typeof(this.doc) != 'undefined') {
47c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block        docRef = this.doc;
48c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      }
49c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      docsLoaded += preload(docRef, "doc", "hc_staff");
50c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
51c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var dupDocRef = null;
52c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      if (typeof(this.dupDoc) != 'undefined') {
53c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block        dupDocRef = this.dupDoc;
54c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      }
55c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      docsLoaded += preload(dupDocRef, "dupDoc", "hc_staff");
56c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
57c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block       if (docsLoaded == 2) {
58c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block          setUpPageStatus = 'complete';
59c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block       }
60c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    } catch(ex) {
61c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    	catchInitializationError(builder, ex);
62c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block        setUpPageStatus = 'complete';
63c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    }
64c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block}
65c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
66c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
67c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
68c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//
69c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//   This method is called on the completion of
70c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//      each asychronous load started in setUpTests.
71c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//
72c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//   When every synchronous loaded document has completed,
73c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//      the page status is changed which allows the
74c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block//      body of the test to be executed.
75c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction loadComplete() {
76c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    if (++docsLoaded == 2) {
77c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block        setUpPageStatus = 'complete';
78c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    }
79c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block}
80c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
81c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
82c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block/**
83c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block*
84c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	Retreive the first element node whose localName is "p".  Import it into a new
85c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	Document with deep=false.  Using isEqualNode check if the original and the imported
86c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	Element Node are not equal the child nodes are different.
87c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	Import with deep and the should still be unequal if
88c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	validating since the
89c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	new document does not provide the same default attributes.
90c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	Import it into another instance of the source document
91c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	and then the imported node and the source should be equal.
92c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
93c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @author IBM
94c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @author Neil Delima
95c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#Node3-isEqualNode
96c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=529
97c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block*/
98c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction nodeisequalnode11() {
99c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block   var success;
100c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    if(checkInitialization(builder, "nodeisequalnode11") != null) return;
101c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block    var doc;
102c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var domImpl;
103c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var employeeList;
104c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var newDoc;
105c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var dupDoc;
106c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var elem1;
107c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var elem2;
108c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var elem3;
109c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var elem4;
110c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var isEqual;
111c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var nullDocType = null;
112c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
113c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var docElem;
114c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var rootNS;
115c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var rootName;
116c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
117c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var docRef = null;
118c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      if (typeof(this.doc) != 'undefined') {
119c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block        docRef = this.doc;
120c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      }
121c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      doc = load(docRef, "doc", "hc_staff");
122c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      docElem = doc.documentElement;
123c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
124c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      rootNS = docElem.namespaceURI;
125c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
126c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      rootName = docElem.tagName;
127c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
128c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      domImpl = doc.implementation;
129c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve BlocknewDoc = domImpl.createDocument(rootNS,rootName,nullDocType);
130c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      employeeList = doc.getElementsByTagName("p");
131c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      elem1 = employeeList.item(0);
132c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      elem2 = newDoc.importNode(elem1,false);
133c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      isEqual = elem1.isEqualNode(elem2);
134c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      assertFalse("nodeisequalnodeFalse11",isEqual);
135c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockelem3 = newDoc.importNode(elem1,true);
136c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      isEqual = elem1.isEqualNode(elem3);
137c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
138c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	if(
139c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	(getImplementationAttribute("validating") == true)
140c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	) {
141c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	assertFalse("deepImportNoDTD",isEqual);
142c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
143c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block	}
144c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
145c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      var dupDocRef = null;
146c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      if (typeof(this.dupDoc) != 'undefined') {
147c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block        dupDocRef = this.dupDoc;
148c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      }
149c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      dupDoc = load(dupDocRef, "dupDoc", "hc_staff");
150c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      elem4 = dupDoc.importNode(elem1,true);
151c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      isEqual = elem1.isEqualNode(elem4);
152c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block      assertTrue("deepImportSameDTD",isEqual);
153c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
154c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block}
155c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
156c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
157c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
158c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block
159c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Blockfunction runTest() {
160c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block   nodeisequalnode11();
161c95a81d8cfc937ef06eedc21d60cce1aa1a92463Steve Block}
162