content/base/test/test_NodeIterator_mutations_2.html

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/content/base/test/test_NodeIterator_mutations_2.html	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,112 @@
     1.4 +<!DOCTYPE HTML>
     1.5 +<html>
     1.6 +<!-- NodeIterator mutation tests, 2.
     1.7 +     Originally part of WebKit, Mochi-ified by Zack Weinberg.
     1.8 +     This file based on node-iterator-00[...].html from
     1.9 +       http://svn.webkit.org/repository/webkit/trunk/LayoutTests/traversal/
    1.10 +  -->
    1.11 +<head>
    1.12 + <title>DOM Traversal: NodeIterator: Mutations (2/x)</title>
    1.13 +  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
    1.14 +  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
    1.15 +</head>
    1.16 +<p id="display"></p>
    1.17 +<div id="content" style="display: none">
    1.18 +</div>
    1.19 +<pre id="test">
    1.20 +<script class="testbody" type="text/javascript">
    1.21 +  function resetContent() {
    1.22 +    var content = $('content');
    1.23 +    content.innerHTML = ('<span id="A"><\/span><span id="B"><\/span>'
    1.24 +			 + '<span id="C"><\/span><span id="D"><\/span>'
    1.25 +			 + '<span id="E"><\/span><span id="F"><\/span>'
    1.26 +			 + '<span id="G"><\/span><span id="H"><\/span>'
    1.27 +			 + '<span id="I"><\/span>');
    1.28 +    return content;
    1.29 +  }
    1.30 +
    1.31 +  function makeSpan(id) {
    1.32 +    var e = document.createElement('span');
    1.33 +    e.id = id;
    1.34 +    return e;
    1.35 +  }
    1.36 +
    1.37 +  function testNodeFilter(n) {
    1.38 +    if (n.tagName == 'SPAN')
    1.39 +      return NodeFilter.FILTER_ACCEPT;
    1.40 +    return NodeFilter.FILTER_SKIP;
    1.41 +  }
    1.42 +
    1.43 +  function checkseq(it, root, expect) {
    1.44 +    var checkIt = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
    1.45 +					      testNodeFilter);
    1.46 +    var printedPointer = (it.referenceNode == undefined);
    1.47 +    var string = '';
    1.48 +    var node;
    1.49 +    while ((node = checkIt.nextNode()) != null) {
    1.50 +      if (!printedPointer && it.referenceNode == node) {
    1.51 +        printedPointer = true;
    1.52 +	var s = '[' + node.id + '] ';
    1.53 +          if (it.pointerBeforeReferenceNode)
    1.54 +            string += "* " + s;
    1.55 +          else
    1.56 +            string += s + "* ";
    1.57 +      } else {
    1.58 +        string += node.id + " ";
    1.59 +      }
    1.60 +    }
    1.61 +    is(string.slice(0, -1), expect, "sequence check");
    1.62 +  }
    1.63 +
    1.64 +  // first a basic sanity check [node-iterator-001]
    1.65 +  (function(){
    1.66 +     var root = resetContent();
    1.67 +     var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
    1.68 +					  testNodeFilter);
    1.69 +
    1.70 +     checkseq(it, root, 'A B C D E F G H I');
    1.71 +     it.nextNode();
    1.72 +     checkseq(it, root, '[A] * B C D E F G H I');
    1.73 +     it.previousNode();
    1.74 +     checkseq(it, root, '* [A] B C D E F G H I');
    1.75 +     it.previousNode();
    1.76 +     checkseq(it, root, '* [A] B C D E F G H I');
    1.77 +  })();
    1.78 +
    1.79 +  // Mutations that should not move the iterator [node-iterator-002]
    1.80 +  (function(){
    1.81 +     var root = resetContent();
    1.82 +     var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
    1.83 +					  testNodeFilter);
    1.84 +
    1.85 +     for (var i = 0; i < 4; i++)
    1.86 +       it.nextNode();
    1.87 +     checkseq(it, root, 'A B C [D] * E F G H I');
    1.88 +
    1.89 +     root.removeChild($('E'));
    1.90 +     checkseq(it, root, 'A B C [D] * F G H I');
    1.91 +
    1.92 +     var X = makeSpan('X');
    1.93 +     root.insertBefore(X, $('F'));
    1.94 +     checkseq(it, root, 'A B C [D] * X F G H I');
    1.95 +
    1.96 +     var I = $('I');
    1.97 +     root.removeChild(I);
    1.98 +     root.insertBefore(I, X);
    1.99 +     checkseq(it, root, 'A B C [D] * I X F G H');
   1.100 +  })();
   1.101 +
   1.102 +  // 002 complete
   1.103 +
   1.104 +  /* Template
   1.105 +  (function(){
   1.106 +     var root = resetContent();
   1.107 +     var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
   1.108 +					  testNodeFilter);
   1.109 +
   1.110 +  })();
   1.111 +  */
   1.112 +</script>
   1.113 +</pre>
   1.114 +</body>
   1.115 +</html>

mercurial