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