description('Test TreeWalker with rejection'); var walker; var testElement = document.createElement("div"); testElement.innerHTML='
'; var rejectB1Filter = { acceptNode: function(node) { if (node.id == 'B1') return NodeFilter.FILTER_REJECT; return NodeFilter.FILTER_ACCEPT; } } var rejectB2Filter = { acceptNode: function(node) { if (node.id == 'B2') return NodeFilter.FILTER_SKIP; return NodeFilter.FILTER_ACCEPT; } } debug("
Testing nextNode") walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter, false); shouldBe("walker.nextNode(); walker.currentNode.id", "'A1'"); shouldBe("walker.nextNode(); walker.currentNode.id", "'B2'"); shouldBe("walker.nextNode(); walker.currentNode.id", "'B3'"); debug("
Testing firstChild") walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter, false); shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); shouldBe("walker.firstChild(); walker.currentNode.id", "'B2'"); debug("
Testing nextSibling") walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB2Filter, false); shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); shouldBe("walker.firstChild(); walker.currentNode.id", "'B1'"); shouldBe("walker.nextSibling(); walker.currentNode.id", "'B3'"); debug("
Testing parentNode") walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter, false); walker.currentNode = testElement.querySelectorAll('#C1')[0]; shouldBe("walker.parentNode(); walker.currentNode.id", "'A1'"); debug("
Testing previousSibling") walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB2Filter, false); walker.currentNode = testElement.querySelectorAll('#B3')[0]; shouldBe("walker.previousSibling(); walker.currentNode.id", "'B1'"); debug("
Testing previousNode") walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter, false); walker.currentNode = testElement.querySelectorAll('#B3')[0]; shouldBe("walker.previousNode(); walker.currentNode.id", "'B2'"); shouldBe("walker.previousNode(); walker.currentNode.id", "'A1'"); var successfullyParsed = true;