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 |