<html>
<head>
<script language="JavaScript">
if (window.layoutTestController)
    layoutTestController.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>
