<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description('Test JS objects as NodeFilters.');

var walker;
var testElement = document.createElement("div");
testElement.id = 'root';
testElement.innerHTML='<div id="A1"><div id="B1"></div><div id="B2"></div></div>';
debug("Testing with object filter");
walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, function(node) {
  throw('filter exception');
  return NodeFilter.FILTER_ACCEPT;
}, false);

debug("Test with filter function");
shouldThrow("walker.firstChild();");
shouldBe("walker.currentNode.id", "'root'")
shouldThrow("walker.nextNode();walker.currentNode.id");
shouldBe("walker.currentNode.id", "'root'")

walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, {
    acceptNode : function(node) {
      throw('filter exception');
      return NodeFilter.FILTER_ACCEPT;
    }
  }, false);

debug("<br>Test with filter object");
shouldThrow("walker.firstChild();");
shouldBe("walker.currentNode.id", "'root'")
shouldThrow("walker.nextNode();walker.currentNode.id");
shouldBe("walker.currentNode.id", "'root'")
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
