1eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdescription('Test TreeWalker with rejection'); 2eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 3eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar walker; 4eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar testElement = document.createElement("div"); 5eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlocktestElement.innerHTML='<div id="A1"> <div id="B1"> <div id="C1"></div> </div> <div id="B2"></div><div id="B3"></div> </div>'; 6eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 7eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar rejectB1Filter = { 8eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block acceptNode: function(node) { 9eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block if (node.id == 'B1') 10eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block return NodeFilter.FILTER_REJECT; 11eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 12eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block return NodeFilter.FILTER_ACCEPT; 13eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block } 14eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block} 15eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 16eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar rejectB2Filter = { 17eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block acceptNode: function(node) { 18eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block if (node.id == 'B2') 19eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block return NodeFilter.FILTER_SKIP; 20eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 21eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block return NodeFilter.FILTER_ACCEPT; 22eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block } 23eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block} 24eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 25eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing nextNode") 26eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter, false); 27eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.nextNode(); walker.currentNode.id", "'A1'"); 28eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.nextNode(); walker.currentNode.id", "'B2'"); 29eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.nextNode(); walker.currentNode.id", "'B3'"); 30eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 31eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing firstChild") 32eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter, false); 33eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); 34eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.firstChild(); walker.currentNode.id", "'B2'"); 35eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 36eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing nextSibling") 37eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB2Filter, false); 38eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); 39eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.firstChild(); walker.currentNode.id", "'B1'"); 40eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.nextSibling(); walker.currentNode.id", "'B3'"); 41eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 42eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing parentNode") 43eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter, false); 44eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker.currentNode = testElement.querySelectorAll('#C1')[0]; 45eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.parentNode(); walker.currentNode.id", "'A1'"); 46eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 47eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing previousSibling") 48eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB2Filter, false); 49eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker.currentNode = testElement.querySelectorAll('#B3')[0]; 50eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.previousSibling(); walker.currentNode.id", "'B1'"); 51eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 52eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing previousNode") 53eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter, false); 54eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker.currentNode = testElement.querySelectorAll('#B3')[0]; 55eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.previousNode(); walker.currentNode.id", "'B2'"); 56eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.previousNode(); walker.currentNode.id", "'A1'"); 57eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 58eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar successfullyParsed = true; 59