| OLD | NEW |
| 1 description('Test JS objects as NodeFilters.'); | 1 description('Test JS objects as NodeFilters.'); |
| 2 | 2 |
| 3 var walker; | 3 var walker; |
| 4 var testElement = document.createElement("div"); | 4 var testElement = document.createElement("div"); |
| 5 testElement.id = 'root'; | 5 testElement.id = 'root'; |
| 6 testElement.innerHTML='<div id="A1"><div id="B1"></div><div id="B2"></div></div>
'; | 6 testElement.innerHTML='<div id="A1"><div id="B1"></div><div id="B2"></div></div>
'; |
| 7 | 7 |
| 8 function filter(node) | 8 function filter(node) |
| 9 { | 9 { |
| 10 debug(" filtering node " + node.id); | 10 debug(" filtering node " + node.id + " [this=" + this + "]"); |
| 11 if (node.id == "B1") | 11 if (node.id == "B1") |
| 12 return NodeFilter.FILTER_SKIP; | 12 return NodeFilter.FILTER_SKIP; |
| 13 return NodeFilter.FILTER_ACCEPT; | 13 return NodeFilter.FILTER_ACCEPT; |
| 14 } | 14 } |
| 15 | 15 |
| 16 debug("Testing with raw function filter"); | 16 debug("Testing with raw function filter"); |
| 17 walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter,
false); | 17 walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter,
false); |
| 18 shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); | 18 shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); |
| 19 shouldBe("walker.nextNode(); walker.currentNode.id", "'B2'"); | 19 shouldBe("walker.nextNode(); walker.currentNode.id", "'B2'"); |
| 20 | 20 |
| 21 function strictFilter(node) |
| 22 { |
| 23 "use strict"; |
| 24 debug(" filtering node " + node.id + " [this=" + this + "]"); |
| 25 if (node.id == "B1") |
| 26 return NodeFilter.FILTER_SKIP; |
| 27 return NodeFilter.FILTER_ACCEPT; |
| 28 } |
| 29 |
| 30 debug("<br>Testing with strict raw function filter"); |
| 31 walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, strictF
ilter, false); |
| 32 shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); |
| 33 shouldBe("walker.nextNode(); walker.currentNode.id", "'B2'"); |
| 34 |
| 21 debug("<br>Testing with object filter"); | 35 debug("<br>Testing with object filter"); |
| 22 walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, { | 36 walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, { |
| 37 toString : function() { |
| 38 return "custom node filter"; |
| 39 }, |
| 23 acceptNode : function(node) { | 40 acceptNode : function(node) { |
| 24 debug(" filtering node " + node.id); | 41 debug(" filtering node " + node.id + " [this=" + this + "]"); |
| 25 if (node.id == "B1") | 42 if (node.id == "B1") |
| 26 return NodeFilter.FILTER_SKIP; | 43 return NodeFilter.FILTER_SKIP; |
| 27 return NodeFilter.FILTER_ACCEPT; | 44 return NodeFilter.FILTER_ACCEPT; |
| 28 } | 45 } |
| 29 }, false); | 46 }, false); |
| 30 | 47 |
| 31 shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); | 48 shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); |
| 32 shouldBe("walker.nextNode(); walker.currentNode.id", "'B2'"); | 49 shouldBe("walker.nextNode(); walker.currentNode.id", "'B2'"); |
| 33 | 50 |
| 34 debug("<br>Testing with null filter"); | 51 debug("<br>Testing with null filter"); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 debug("<br>Testing acceptNode callee"); | 87 debug("<br>Testing acceptNode callee"); |
| 71 var filter = { | 88 var filter = { |
| 72 acceptNode: function(node) { | 89 acceptNode: function(node) { |
| 73 debug('Callee: ' + arguments.callee); | 90 debug('Callee: ' + arguments.callee); |
| 74 return NodeFilter.FILTER_ACCEPT; | 91 return NodeFilter.FILTER_ACCEPT; |
| 75 } | 92 } |
| 76 }; | 93 }; |
| 77 walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter,
false); | 94 walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter,
false); |
| 78 | 95 |
| 79 shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); | 96 shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'"); |
| OLD | NEW |