summaryrefslogtreecommitdiffstats
path: root/LayoutTests/fast/dom/TreeWalker/resources/TreeWalker-currentNode.js
diff options
context:
space:
mode:
Diffstat (limited to 'LayoutTests/fast/dom/TreeWalker/resources/TreeWalker-currentNode.js')
-rw-r--r--LayoutTests/fast/dom/TreeWalker/resources/TreeWalker-currentNode.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/LayoutTests/fast/dom/TreeWalker/resources/TreeWalker-currentNode.js b/LayoutTests/fast/dom/TreeWalker/resources/TreeWalker-currentNode.js
new file mode 100644
index 0000000..4a6768b
--- /dev/null
+++ b/LayoutTests/fast/dom/TreeWalker/resources/TreeWalker-currentNode.js
@@ -0,0 +1,55 @@
+description("Tests the TreeWalker.")
+
+var subTree = document.createElement('div');
+subTree.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>"
+document.body.appendChild(subTree);
+
+var all = function(node) { return true; }
+var w = document.createTreeWalker(subTree, 0x01 | 0x08 | 0x10 | 0x20, all, true);
+
+debug("Test that TreeWalker.parent() doesn't set the currentNode to a node not under the root.");
+debug("");
+
+shouldBe("w.currentNode", "subTree");
+shouldBeNull("w.parentNode()");
+shouldBe("w.currentNode", "subTree");
+
+debug("");
+debug("Test that we handle setting the currentNode to arbitrary nodes not under the root element.");
+debug("");
+
+w.currentNode = document.documentElement;
+shouldBeNull("w.parentNode()");
+shouldBe("w.currentNode", "document.documentElement");
+w.currentNode = document.documentElement;
+shouldBe("w.nextNode()", "document.documentElement.firstChild");
+shouldBe("w.currentNode", "document.documentElement.firstChild");
+w.currentNode = document.documentElement;
+shouldBeNull("w.previousNode()");
+shouldBe("w.currentNode", "document.documentElement");
+w.currentNode = document.documentElement;
+shouldBe("w.firstChild()", "document.documentElement.firstChild");
+shouldBe("w.currentNode", "document.documentElement.firstChild");
+w.currentNode = document.documentElement;
+shouldBe("w.lastChild()", "document.documentElement.lastChild");
+shouldBe("w.currentNode", "document.documentElement.lastChild");
+w.currentNode = document.documentElement;
+shouldBeNull("w.nextSibling()");
+shouldBe("w.currentNode", "document.documentElement");
+w.currentNode = document.documentElement;
+shouldBeNull("w.previousSibling()");
+shouldBe("w.currentNode", "document.documentElement");
+
+debug("");
+debug("Test how we handle the case when the traversed to node within the root, but the currentElement is not.");
+debug("");
+
+w.currentNode = subTree.previousSibling;
+shouldBe("w.nextNode()", "subTree");
+w.currentNode = document.body;
+shouldBe("w.lastChild()", "subTree");
+
+// Cleanup
+document.body.removeChild(subTree);
+
+var successfullyParsed = true;