/* * Copyright (C) 2006 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ function shouldBe(a, b) { var evalA; try { evalA = eval(a); } catch(e) { evalA = e; } if (evalA == b || isNaN(evalA) && typeof evalA == 'number' && isNaN(b) && typeof b == 'number') print("PASS: " + a + " should be " + b + " and is.", "green"); else print("__FAIL__: " + a + " should be " + b + " but instead is " + evalA + ".", "red"); } function test() { print("Node is " + Node); for (var p in Node) print(p + ": " + Node[p]); node = new Node(); print("node is " + node); for (var p in node) print(p + ": " + node[p]); child1 = new Node(); child2 = new Node(); child3 = new Node(); node.appendChild(child1); node.appendChild(child2); var childNodes = node.childNodes; for (var i = 0; i < childNodes.length + 1; i++) { print("item " + i + ": " + childNodes.item(i)); } for (var i = 0; i < childNodes.length + 1; i++) { print(i + ": " + childNodes[i]); } node.removeChild(child1); node.replaceChild(child3, child2); for (var i = 0; i < childNodes.length + 1; i++) { print("item " + i + ": " + childNodes.item(i)); } for (var i = 0; i < childNodes.length + 1; i++) { print(i + ": " + childNodes[i]); } try { node.appendChild(null); } catch(e) { print("caught: " + e); } try { var o = new Object(); o.appendChild = node.appendChild; o.appendChild(node); } catch(e) { print("caught: " + e); } try { node.appendChild(); } catch(e) { print("caught: " + e); } oldNodeType = node.nodeType; node.nodeType = 1; shouldBe("node.nodeType", oldNodeType); shouldBe("node instanceof Node", true); shouldBe("new Object() instanceof Node", false); print(Node); } test();