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