tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_NodeIterator_mutations_1.xhtml (6665B)


      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 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. */
     26 
     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  }
     32 
     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  }
     51 
     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');
     60 
     61    var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
     62 				       null);
     63    check(iterator.nextNode(), root, '1.0');
     64 
     65    // 1. Remove a node unrelated to the reference node
     66    remove($('X'));
     67    check(iterator.nextNode(), A, '1.1');
     68 
     69    // 2. Remove an ancestor of the root node
     70    remove($('Y'));
     71    check(iterator.nextNode(), B, '1.2');
     72 
     73    // 3. Remove the root node itself
     74    remove(root);
     75    check(iterator.nextNode(), C, '1.3');
     76 
     77    // 4. Remove a descendant of the reference node
     78    remove(E);
     79    check(iterator.nextNode(), D, '1.4');
     80  })();
     81 
     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);
     91 
     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  })();
    101 
    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');
    110 
    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  })();
    128 
    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');
    136 
    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  })();
    146 
    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');
    154 
    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  })();
    165 
    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');
    173 
    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  })();
    184 
    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');
    192 
    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>