content/base/test/test_NodeIterator_mutations_1.xhtml

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <html xmlns="http://www.w3.org/1999/xhtml">
     2 <!-- NodeIterator mutation tests.
     3      Originally written by Ian Hickson, Mochi-ified by Zack Weinberg.
     4      This file based on 00[3-9].xml from
     5        http://hixie.ch/tests/adhoc/dom/traversal/node-iterator/
     6   -->
     7 <head>
     8   <title>DOM Traversal: NodeIterator: Mutations (1/x)</title>
     9   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
    10   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
    11 </head>
    12 <body>
    13 <p id="display"></p>
    14 <div id="content" style="display: none">
    15 <span id="X"></span><span id="Y"><span id="root1"><span id="A"><span id="B"><span id="C"><span id="D"><span id="E"></span></span></span></span></span></span></span>
    16 <span id="root2"><span id="F"><span id="FF"></span></span><span id="G"></span><span id="H"><span id="HH"></span></span></span>
    17 <span id="root3"><span id="I"><span id="II"></span></span><span id="J"></span><span id="K"><span id="KK"></span></span></span>
    18 <span id="root4"><span id="L"></span><span id="M"><span id="MM"></span></span><span id="N"></span></span>
    19 <span id="root5"><span id="O"></span><span id="P"><span id="PP"></span></span><span id="Q"></span></span>
    20 <span id="root6"><span id="R"></span><span id="S"><span id="SS"></span></span><span id="T"></span></span>
    21 <span id="root7"><span id="U"></span><span id="V"><span id="VV"></span></span><span id="W"></span></span>
    22 </div>
    23 <pre id="test">
    24 <script class="testbody" type="text/javascript"><![CDATA[
    25   /** Originally written by Ian Hickson. **/
    27   function check(f, e, label) {
    28     var eid = e.id;
    29     var fid = f ? f.id : 'null';
    30     is(f, e, label + ': expected ' + eid + ' have ' + fid);
    31   }
    33   var childid = 0;
    34   function addChildTo(a) {
    35     var x = document.createElementNS('http://www.w3.org/1999/xhtml', 'span');
    36     x.id = 'X' + childid;
    37     childid++;
    38     ok(a, 'parent ' + (a?a.id:'undefined') + ' for child ' + x.id);
    39     if (a)
    40       a.appendChild(x);
    41     return x;
    42   }
    43   function remove(a) {
    44     var p = a.parentNode;
    45     ok(a && p,
    46        'removing ' + ( a?(a.id?a.id:'(no id)'):'undefined' )
    47        + ' with parent ' + ( p?(p.id?p.id:'(no id)'):'undefined' ));
    48     if (a && p)
    49       p.removeChild(a);
    50   }
    52   /** Removal of nodes that should have no effect **/
    53   (function () {
    54     var root = $('root1');
    55     var A = $('A');
    56     var B = $('B');
    57     var C = $('C');
    58     var D = $('D');
    59     var E = $('E');
    61     var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
    62 					       null);
    63     check(iterator.nextNode(), root, '1.0');
    65     // 1. Remove a node unrelated to the reference node
    66     remove($('X'));
    67     check(iterator.nextNode(), A, '1.1');
    69     // 2. Remove an ancestor of the root node
    70     remove($('Y'));
    71     check(iterator.nextNode(), B, '1.2');
    73     // 3. Remove the root node itself
    74     remove(root);
    75     check(iterator.nextNode(), C, '1.3');
    77     // 4. Remove a descendant of the reference node
    78     remove(E);
    79     check(iterator.nextNode(), D, '1.4');
    80   })();
    82   /** Removal of the reference node **/
    83   (function () {
    84     var root = $('root2');
    85     var F = $('F');
    86     var FF = $('FF');
    87     var G = $('G');
    88     var H = $('H');
    89     var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
    90 					       null);
    92     check(iterator.nextNode(), root, '2.0');
    93     check(iterator.nextNode(), F,    '2.1');
    94     check(iterator.nextNode(), FF,   '2.2');
    95     check(iterator.nextNode(), G,    '2.3');
    96     remove(G);
    97     check(iterator.previousNode(), FF, '2.4');
    98     remove(FF);
    99     check(iterator.nextNode(), H, '2.5');
   100   })();
   102   /** Removal of the reference node (deep check) **/
   103   (function () {
   104     var root = $('root3');
   105     var I = $('I');
   106     var II = $('II');
   107     var J = $('J');
   108     var K = $('K');
   109     var KK = $('KK');
   111     var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   112 					       null);
   113     check(iterator.nextNode(), root, '3.0');
   114     check(iterator.nextNode(), I, '3.1');
   115     check(iterator.nextNode(), II, '3.2');
   116     check(iterator.nextNode(), J, '3.3');
   117     remove(J);
   118     var X = addChildTo(II);
   119     check(iterator.nextNode(), X, '3.4');
   120     check(iterator.previousNode(), X, '3.5');
   121     remove(X);
   122     var Y = addChildTo(II);
   123     check(iterator.previousNode(), Y, '3.6');
   124     check(iterator.nextNode(), Y, '3.7');
   125     check(iterator.nextNode(), K, '3.8');
   126     check(iterator.nextNode(), KK, '3.9');
   127   })();
   129   /** Removal of an ancestor of the Reference Node (forwards) **/
   130   (function () {
   131     var root = $('root4');
   132     var L = $('L');
   133     var M = $('M');
   134     var MM = $('MM');
   135     var N = $('N');
   137     var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   138 					       null);
   139     check(iterator.nextNode(), root, '4.1');
   140     check(iterator.nextNode(), L, '4.2');
   141     check(iterator.nextNode(), M, '4.3');
   142     check(iterator.nextNode(), MM, '4.4');
   143     remove(M);
   144     check(iterator.previousNode(), L, '4.5');
   145   })();
   147   /** Removal of an ancestor of the Reference Node (forwards) (deep check) **/
   148   (function () {
   149     var root = $('root5');
   150     var O = $('O');
   151     var P = $('P');
   152     var PP = $('PP');
   153     var Q = $('Q');
   155     var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   156 					       null);
   157     check(iterator.nextNode(), root, '5.1');
   158     check(iterator.nextNode(), O, '5.2');
   159     check(iterator.nextNode(), P, '5.3');
   160     check(iterator.nextNode(), PP, '5.4');
   161     remove(P);
   162     var X = addChildTo(O);
   163     check(iterator.nextNode(), X, '5.5');
   164   })();
   166   /** Removal of an ancestor of the Reference Node (backwards) **/
   167   (function () {
   168     var root = $('root6');
   169     var R = $('R');
   170     var S = $('S');
   171     var SS = $('SS');
   172     var T = $('T');
   174     var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   175 					       null);
   176     check(iterator.nextNode(), root, '6.1');
   177     check(iterator.nextNode(), R, '6.2');
   178     check(iterator.nextNode(), S, '6.3');
   179     check(iterator.nextNode(), SS, '6.4');
   180     check(iterator.previousNode(), SS, '6.5');
   181     remove(S);
   182     check(iterator.nextNode(), T, '6.6');
   183   })();
   185   /** Removal of an ancestor of the Reference Node (backwards) (deep check) **/
   186   (function () {
   187     var root = $('root7');
   188     var U = $('U');
   189     var V = $('V');
   190     var VV = $('VV');
   191     var W = $('W');
   193     var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   194 					       null);
   195     check(iterator.nextNode(), root, '7.1');
   196     check(iterator.nextNode(), U, '7.2');
   197     check(iterator.nextNode(), V, '7.3');
   198     check(iterator.nextNode(), VV, '7.4');
   199     check(iterator.previousNode(), VV, '7.5');
   200     remove(V);
   201     var X = addChildTo(U);
   202     check(iterator.previousNode(), X, '7.6');
   203   })();
   204 ]]></script></pre></body></html>

mercurial