content/base/test/test_NodeIterator_mutations_1.xhtml

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/content/base/test/test_NodeIterator_mutations_1.xhtml	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,204 @@
     1.4 +<html xmlns="http://www.w3.org/1999/xhtml">
     1.5 +<!-- NodeIterator mutation tests.
     1.6 +     Originally written by Ian Hickson, Mochi-ified by Zack Weinberg.
     1.7 +     This file based on 00[3-9].xml from
     1.8 +       http://hixie.ch/tests/adhoc/dom/traversal/node-iterator/
     1.9 +  -->
    1.10 +<head>
    1.11 +  <title>DOM Traversal: NodeIterator: Mutations (1/x)</title>
    1.12 +  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
    1.13 +  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
    1.14 +</head>
    1.15 +<body>
    1.16 +<p id="display"></p>
    1.17 +<div id="content" style="display: none">
    1.18 +<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>
    1.19 +<span id="root2"><span id="F"><span id="FF"></span></span><span id="G"></span><span id="H"><span id="HH"></span></span></span>
    1.20 +<span id="root3"><span id="I"><span id="II"></span></span><span id="J"></span><span id="K"><span id="KK"></span></span></span>
    1.21 +<span id="root4"><span id="L"></span><span id="M"><span id="MM"></span></span><span id="N"></span></span>
    1.22 +<span id="root5"><span id="O"></span><span id="P"><span id="PP"></span></span><span id="Q"></span></span>
    1.23 +<span id="root6"><span id="R"></span><span id="S"><span id="SS"></span></span><span id="T"></span></span>
    1.24 +<span id="root7"><span id="U"></span><span id="V"><span id="VV"></span></span><span id="W"></span></span>
    1.25 +</div>
    1.26 +<pre id="test">
    1.27 +<script class="testbody" type="text/javascript"><![CDATA[
    1.28 +  /** Originally written by Ian Hickson. **/
    1.29 +
    1.30 +  function check(f, e, label) {
    1.31 +    var eid = e.id;
    1.32 +    var fid = f ? f.id : 'null';
    1.33 +    is(f, e, label + ': expected ' + eid + ' have ' + fid);
    1.34 +  }
    1.35 +
    1.36 +  var childid = 0;
    1.37 +  function addChildTo(a) {
    1.38 +    var x = document.createElementNS('http://www.w3.org/1999/xhtml', 'span');
    1.39 +    x.id = 'X' + childid;
    1.40 +    childid++;
    1.41 +    ok(a, 'parent ' + (a?a.id:'undefined') + ' for child ' + x.id);
    1.42 +    if (a)
    1.43 +      a.appendChild(x);
    1.44 +    return x;
    1.45 +  }
    1.46 +  function remove(a) {
    1.47 +    var p = a.parentNode;
    1.48 +    ok(a && p,
    1.49 +       'removing ' + ( a?(a.id?a.id:'(no id)'):'undefined' )
    1.50 +       + ' with parent ' + ( p?(p.id?p.id:'(no id)'):'undefined' ));
    1.51 +    if (a && p)
    1.52 +      p.removeChild(a);
    1.53 +  }
    1.54 +
    1.55 +  /** Removal of nodes that should have no effect **/
    1.56 +  (function () {
    1.57 +    var root = $('root1');
    1.58 +    var A = $('A');
    1.59 +    var B = $('B');
    1.60 +    var C = $('C');
    1.61 +    var D = $('D');
    1.62 +    var E = $('E');
    1.63 +
    1.64 +    var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
    1.65 +					       null);
    1.66 +    check(iterator.nextNode(), root, '1.0');
    1.67 +
    1.68 +    // 1. Remove a node unrelated to the reference node
    1.69 +    remove($('X'));
    1.70 +    check(iterator.nextNode(), A, '1.1');
    1.71 +
    1.72 +    // 2. Remove an ancestor of the root node
    1.73 +    remove($('Y'));
    1.74 +    check(iterator.nextNode(), B, '1.2');
    1.75 +
    1.76 +    // 3. Remove the root node itself
    1.77 +    remove(root);
    1.78 +    check(iterator.nextNode(), C, '1.3');
    1.79 +
    1.80 +    // 4. Remove a descendant of the reference node
    1.81 +    remove(E);
    1.82 +    check(iterator.nextNode(), D, '1.4');
    1.83 +  })();
    1.84 +
    1.85 +  /** Removal of the reference node **/
    1.86 +  (function () {
    1.87 +    var root = $('root2');
    1.88 +    var F = $('F');
    1.89 +    var FF = $('FF');
    1.90 +    var G = $('G');
    1.91 +    var H = $('H');
    1.92 +    var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
    1.93 +					       null);
    1.94 +
    1.95 +    check(iterator.nextNode(), root, '2.0');
    1.96 +    check(iterator.nextNode(), F,    '2.1');
    1.97 +    check(iterator.nextNode(), FF,   '2.2');
    1.98 +    check(iterator.nextNode(), G,    '2.3');
    1.99 +    remove(G);
   1.100 +    check(iterator.previousNode(), FF, '2.4');
   1.101 +    remove(FF);
   1.102 +    check(iterator.nextNode(), H, '2.5');
   1.103 +  })();
   1.104 +
   1.105 +  /** Removal of the reference node (deep check) **/
   1.106 +  (function () {
   1.107 +    var root = $('root3');
   1.108 +    var I = $('I');
   1.109 +    var II = $('II');
   1.110 +    var J = $('J');
   1.111 +    var K = $('K');
   1.112 +    var KK = $('KK');
   1.113 +
   1.114 +    var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   1.115 +					       null);
   1.116 +    check(iterator.nextNode(), root, '3.0');
   1.117 +    check(iterator.nextNode(), I, '3.1');
   1.118 +    check(iterator.nextNode(), II, '3.2');
   1.119 +    check(iterator.nextNode(), J, '3.3');
   1.120 +    remove(J);
   1.121 +    var X = addChildTo(II);
   1.122 +    check(iterator.nextNode(), X, '3.4');
   1.123 +    check(iterator.previousNode(), X, '3.5');
   1.124 +    remove(X);
   1.125 +    var Y = addChildTo(II);
   1.126 +    check(iterator.previousNode(), Y, '3.6');
   1.127 +    check(iterator.nextNode(), Y, '3.7');
   1.128 +    check(iterator.nextNode(), K, '3.8');
   1.129 +    check(iterator.nextNode(), KK, '3.9');
   1.130 +  })();
   1.131 +
   1.132 +  /** Removal of an ancestor of the Reference Node (forwards) **/
   1.133 +  (function () {
   1.134 +    var root = $('root4');
   1.135 +    var L = $('L');
   1.136 +    var M = $('M');
   1.137 +    var MM = $('MM');
   1.138 +    var N = $('N');
   1.139 +
   1.140 +    var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   1.141 +					       null);
   1.142 +    check(iterator.nextNode(), root, '4.1');
   1.143 +    check(iterator.nextNode(), L, '4.2');
   1.144 +    check(iterator.nextNode(), M, '4.3');
   1.145 +    check(iterator.nextNode(), MM, '4.4');
   1.146 +    remove(M);
   1.147 +    check(iterator.previousNode(), L, '4.5');
   1.148 +  })();
   1.149 +
   1.150 +  /** Removal of an ancestor of the Reference Node (forwards) (deep check) **/
   1.151 +  (function () {
   1.152 +    var root = $('root5');
   1.153 +    var O = $('O');
   1.154 +    var P = $('P');
   1.155 +    var PP = $('PP');
   1.156 +    var Q = $('Q');
   1.157 +
   1.158 +    var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   1.159 +					       null);
   1.160 +    check(iterator.nextNode(), root, '5.1');
   1.161 +    check(iterator.nextNode(), O, '5.2');
   1.162 +    check(iterator.nextNode(), P, '5.3');
   1.163 +    check(iterator.nextNode(), PP, '5.4');
   1.164 +    remove(P);
   1.165 +    var X = addChildTo(O);
   1.166 +    check(iterator.nextNode(), X, '5.5');
   1.167 +  })();
   1.168 +
   1.169 +  /** Removal of an ancestor of the Reference Node (backwards) **/
   1.170 +  (function () {
   1.171 +    var root = $('root6');
   1.172 +    var R = $('R');
   1.173 +    var S = $('S');
   1.174 +    var SS = $('SS');
   1.175 +    var T = $('T');
   1.176 +
   1.177 +    var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   1.178 +					       null);
   1.179 +    check(iterator.nextNode(), root, '6.1');
   1.180 +    check(iterator.nextNode(), R, '6.2');
   1.181 +    check(iterator.nextNode(), S, '6.3');
   1.182 +    check(iterator.nextNode(), SS, '6.4');
   1.183 +    check(iterator.previousNode(), SS, '6.5');
   1.184 +    remove(S);
   1.185 +    check(iterator.nextNode(), T, '6.6');
   1.186 +  })();
   1.187 +
   1.188 +  /** Removal of an ancestor of the Reference Node (backwards) (deep check) **/
   1.189 +  (function () {
   1.190 +    var root = $('root7');
   1.191 +    var U = $('U');
   1.192 +    var V = $('V');
   1.193 +    var VV = $('VV');
   1.194 +    var W = $('W');
   1.195 +
   1.196 +    var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
   1.197 +					       null);
   1.198 +    check(iterator.nextNode(), root, '7.1');
   1.199 +    check(iterator.nextNode(), U, '7.2');
   1.200 +    check(iterator.nextNode(), V, '7.3');
   1.201 +    check(iterator.nextNode(), VV, '7.4');
   1.202 +    check(iterator.previousNode(), VV, '7.5');
   1.203 +    remove(V);
   1.204 +    var X = addChildTo(U);
   1.205 +    check(iterator.previousNode(), X, '7.6');
   1.206 +  })();
   1.207 +]]></script></pre></body></html>

mercurial