]> git.saurik.com Git - apple/javascriptcore.git/blob - API/minidom.js
JavaScriptCore-466.1.tar.gz
[apple/javascriptcore.git] / API / minidom.js
1 // -*- mode: c++; c-basic-offset: 4 -*-
2 /*
3 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27 function shouldBe(a, b)
28 {
29 var evalA;
30 try {
31 evalA = eval(a);
32 } catch(e) {
33 evalA = e;
34 }
35
36 if (evalA == b || isNaN(evalA) && typeof evalA == 'number' && isNaN(b) && typeof b == 'number')
37 print("PASS: " + a + " should be " + b + " and is.", "green");
38 else
39 print("__FAIL__: " + a + " should be " + b + " but instead is " + evalA + ".", "red");
40 }
41
42 function test()
43 {
44 print("Node is " + Node);
45 for (var p in Node)
46 print(p + ": " + Node[p]);
47
48 node = new Node();
49 print("node is " + node);
50 for (var p in node)
51 print(p + ": " + node[p]);
52
53 child1 = new Node();
54 child2 = new Node();
55 child3 = new Node();
56
57 node.appendChild(child1);
58 node.appendChild(child2);
59
60 var childNodes = node.childNodes;
61
62 for (var i = 0; i < childNodes.length + 1; i++) {
63 print("item " + i + ": " + childNodes.item(i));
64 }
65
66 for (var i = 0; i < childNodes.length + 1; i++) {
67 print(i + ": " + childNodes[i]);
68 }
69
70 node.removeChild(child1);
71 node.replaceChild(child3, child2);
72
73 for (var i = 0; i < childNodes.length + 1; i++) {
74 print("item " + i + ": " + childNodes.item(i));
75 }
76
77 for (var i = 0; i < childNodes.length + 1; i++) {
78 print(i + ": " + childNodes[i]);
79 }
80
81 try {
82 node.appendChild(null);
83 } catch(e) {
84 print("caught: " + e);
85 }
86
87 try {
88 var o = new Object();
89 o.appendChild = node.appendChild;
90 o.appendChild(node);
91 } catch(e) {
92 print("caught: " + e);
93 }
94
95 try {
96 node.appendChild();
97 } catch(e) {
98 print("caught: " + e);
99 }
100
101 oldNodeType = node.nodeType;
102 node.nodeType = 1;
103 shouldBe("node.nodeType", oldNodeType);
104
105 shouldBe("node instanceof Node", true);
106 shouldBe("new Object() instanceof Node", false);
107
108 print(Node);
109 }
110
111 test();