1description("Tests the TreeWalker.")
2
3var subTree = document.createElement('div');
4subTree.innerHTML = "<p>Lorem ipsum <span>dolor <b>sit</b> amet</span>, consectetur <i>adipisicing</i> elit, sed do eiusmod <tt>tempor <b><i>incididunt ut</i> labore</b> et dolore magna</tt> aliqua.</p>"
5document.body.appendChild(subTree);
6
7var all = function(node) { return true; }
8var w = document.createTreeWalker(subTree, 0x01 | 0x08 | 0x10 | 0x20, all, true);
9
10debug("Test that TreeWalker.parent() doesn't set the currentNode to a node not under the root.");
11debug("");
12
13shouldBe("w.currentNode", "subTree");
14shouldBeNull("w.parentNode()");
15shouldBe("w.currentNode", "subTree");
16
17debug("");
18debug("Test that we handle setting the currentNode to arbitrary nodes not under the root element.");
19debug("");
20
21w.currentNode = document.documentElement;
22shouldBeNull("w.parentNode()");
23shouldBe("w.currentNode", "document.documentElement");
24w.currentNode = document.documentElement;
25shouldBe("w.nextNode()", "document.documentElement.firstChild");
26shouldBe("w.currentNode", "document.documentElement.firstChild");
27w.currentNode = document.documentElement;
28shouldBeNull("w.previousNode()");
29shouldBe("w.currentNode", "document.documentElement");
30w.currentNode = document.documentElement;
31shouldBe("w.firstChild()", "document.documentElement.firstChild");
32shouldBe("w.currentNode", "document.documentElement.firstChild");
33w.currentNode = document.documentElement;
34shouldBe("w.lastChild()", "document.documentElement.lastChild");
35shouldBe("w.currentNode", "document.documentElement.lastChild");
36w.currentNode = document.documentElement;
37shouldBeNull("w.nextSibling()");
38shouldBe("w.currentNode", "document.documentElement");
39w.currentNode = document.documentElement;
40shouldBeNull("w.previousSibling()");
41shouldBe("w.currentNode", "document.documentElement");
42
43debug("");
44debug("Test how we handle the case when the traversed to node within the root, but the currentElement is not.");
45debug("");
46
47w.currentNode = subTree.previousSibling;
48shouldBe("w.nextNode()", "subTree");
49w.currentNode = document.body;
50shouldBe("w.lastChild()", "subTree");
51
52// Cleanup
53document.body.removeChild(subTree);
54
55var successfullyParsed = true;
56