chromium/third_party/blink/web_tests/traversal/stay-within-root.html

<html>
<head>
<script language="JavaScript">
if (window.testRunner)
    testRunner.dumpAsText();

function log(message) {
    var console = document.getElementById("console");
    var li = document.createElement("li");
    var text = document.createTextNode(message);
    li.appendChild(text);
    console.appendChild(li);
}

function iteratorTest() {
    log("NodeIterator: testing nextNode() (5 should be null)");
    var iterator = document.createNodeIterator(divB, NodeFilter.SHOW_ELEMENT, null, false);
    iterator.root = divB;
    for (i=0; i < 4; i++)
        log(iterator.nextNode());

    log("NodeIterator: testing previousNode() (7 should be null)");
    iterator = document.createNodeIterator(divB, NodeFilter.SHOW_ELEMENT, null, false);
    log(iterator.previousNode());
    
    log("TreeWalker: testing nextNode() (11 should be null)");
    iterator = document.createTreeWalker(divB, NodeFilter.SHOW_ELEMENT, null, false);
    for (i=0; i < 3; i++)
        log(iterator.nextNode());

    log("TreeWalker: testing previousNode() (13 should be null)");
    iterator = document.createTreeWalker(divB, NodeFilter.SHOW_ELEMENT, null, false);
    log(iterator.previousNode());
}
</script>
</head>

<body>
<div id="divA">
This test checks that the NodeIterator and TreeWalker functions do not go past the root element that they are supposed to stay within.
<div id="divB">
<div id="divC">
</div>
<div id="divD">
</div>

</div>
</div>

<ol id="console" > </ol>

<script>
iteratorTest();
</script>

</body>

</html>