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>