1eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdescription('Test TreeWalker with skipping'); 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 skipB1Filter = { 8eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block acceptNode: function(node) { 9eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block if (node.id == 'B1') 10eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block return NodeFilter.FILTER_SKIP; 11eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 12eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block return NodeFilter.FILTER_ACCEPT; 13eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block } 14eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block} 15eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 16eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar skipB2Filter = { 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, skipB1Filter, false); 27eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.nextNode(); walker.currentNode.id", "'A1'"); 28eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.nextNode(); walker.currentNode.id", "'C1'"); 29eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.nextNode(); walker.currentNode.id", "'B2'"); 30eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.nextNode(); walker.currentNode.id", "'B3'"); 31eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 32eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing firstChild") 33eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB1Filter, false); 34eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); 35eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.firstChild(); walker.currentNode.id", "'C1'"); 36eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 37eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing nextSibling") 38eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB2Filter, false); 39eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); 40eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.firstChild(); walker.currentNode.id", "'B1'"); 41eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.nextSibling(); walker.currentNode.id", "'B3'"); 42eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 43eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing parentNode") 44eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB1Filter, false); 45eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker.currentNode = testElement.querySelectorAll('#C1')[0]; 46eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.parentNode(); walker.currentNode.id", "'A1'"); 47eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 48eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing previousSibling") 49eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB2Filter, false); 50eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker.currentNode = testElement.querySelectorAll('#B3')[0]; 51eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.previousSibling(); walker.currentNode.id", "'B1'"); 52eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 53eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdebug("<br>Testing previousNode") 54eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB1Filter, false); 55eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockwalker.currentNode = testElement.querySelectorAll('#B3')[0]; 56eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.previousNode(); walker.currentNode.id", "'B2'"); 57eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.previousNode(); walker.currentNode.id", "'C1'"); 58eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve BlockshouldBe("walker.previousNode(); walker.currentNode.id", "'A1'"); 59eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block 60eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar successfullyParsed = true; 61