Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Unified Diff: LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html

Issue 16865007: Make createNodeIterator() and createTreeWalker() accept default arguments. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Use type tags in tests. Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html
diff --git a/LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html b/LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html
new file mode 100644
index 0000000000000000000000000000000000000000..65b6df947c99a4508f4b33c2f2bb9f0186c12778
--- /dev/null
+++ b/LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>TreeWalker: Basic test</title>
+<script src="../../../resources/testharness.js"></script>
+<script src="../../../resources/testharnessreport.js"></script>
+<link rel="stylesheet" href="../../../resources/testharness.css">
+</head>
+<body>
+<p>This test checks the basic functionality of TreeWalker.</p>
+<script>
+function createSampleDOM()
+{
+ // Tree structure:
+ // #a
+ // |
+ // +----+----+
+ // | |
+ // "b" #c
+ // |
+ // +----+----+
+ // | |
+ // #d <!--j-->
+ // |
+ // +----+----+
+ // | | |
+ // "e" #f "i"
+ // |
+ // +--+--+
+ // | |
+ // "g" <!--h-->
+ var div = document.createElement('div');
+ div.id = 'a';
+ div.innerHTML = 'b<div id="c"><div id="d">e<span id="f">g<!--h--></span>i</div><!--j--></div>';
+ return div;
+}
+
+test(function ()
+{
+ var root = createSampleDOM();
+ var walker = document.createTreeWalker(root);
+ assert_equals(walker.toString(), '[object TreeWalker]');
+ assert_equals(walker.root, root);
+ assert_equals(walker.whatToShow, 0xFFFFFFFF);
+ assert_equals(walker.filter, null);
+ assert_equals(walker.currentNode, root);
+ assert_readonly(walker, 'root');
+ assert_readonly(walker, 'whatToShow');
+ assert_readonly(walker, 'filter');
+ assert_idl_attribute(walker, 'parentNode');
+ assert_idl_attribute(walker, 'firstChild');
+ assert_idl_attribute(walker, 'lastChild');
+ assert_idl_attribute(walker, 'previousSibling');
+ assert_idl_attribute(walker, 'nextSibling');
+ assert_idl_attribute(walker, 'previousNode');
+ assert_idl_attribute(walker, 'nextNode');
+}, 'Construct a TreeWalker by document.createTreeWalker().');
+
+test(function ()
+{
+ assert_throws(new TypeError(), function () { document.createTreeWalker(); });
+ assert_throws('NOT_SUPPORTED_ERR', function () { document.createTreeWalker(null); });
+ assert_throws('NOT_SUPPORTED_ERR', function () { document.createTreeWalker(undefined); });
+ assert_throws('NOT_SUPPORTED_ERR', function () { document.createTreeWalker(new Object()); });
+ assert_throws('NOT_SUPPORTED_ERR', function () { document.createTreeWalker(1); });
+}, 'Give an invalid root node to document.createTreeWalker().');
+
+// |expected| should be an object indicating the expected type of node.
+function assert_node(actual, expected)
+{
+ assert_true(actual instanceof expected.type,
+ 'Node type mismatch: actual = ' + actual.nodeType + ', expected = ' + expected.nodeType);
+ if (typeof(expected.id) !== 'undefined')
+ assert_equals(actual.id, expected.id);
+ if (typeof(expected.nodeValue) !== 'undefined')
+ assert_equals(actual.nodeValue, expected.nodeValue);
+}
+
+test(function ()
+{
+ var root = createSampleDOM();
+ var walker = document.createTreeWalker(root);
+ var f = root.lastChild.firstChild.childNodes[1]; // An element node: div#f.
+ var body = document.body; // An element outside |root|.
+
+ assert_node(walker.currentNode, { type: Element, id: 'a' });
+ assert_equals(walker.parentNode(), null);
+ assert_node(walker.currentNode, { type: Element, id: 'a' });
+ assert_node(walker.firstChild(), { type: Text, nodeValue: 'b' });
+ assert_node(walker.currentNode, { type: Text, nodeValue: 'b' });
+ assert_node(walker.nextSibling(), { type: Element, id: 'c' });
+ assert_node(walker.currentNode, { type: Element, id: 'c' });
+ assert_node(walker.lastChild(), { type: Comment, nodeValue: 'j' });
+ assert_node(walker.currentNode, { type: Comment, nodeValue: 'j' });
+ assert_node(walker.previousSibling(), { type: Element, id: 'd' });
+ assert_node(walker.currentNode, { type: Element, id: 'd' });
+ assert_node(walker.nextNode(), { type: Text, nodeValue: 'e' });
+ assert_node(walker.currentNode, { type: Text, nodeValue: 'e' });
+ assert_node(walker.parentNode(), { type: Element, id: 'd' });
+ assert_node(walker.currentNode, { type: Element, id: 'd' });
+ assert_node(walker.previousNode(), { type: Element, id: 'c' });
+ assert_node(walker.currentNode, { type: Element, id: 'c' });
+ assert_equals(walker.nextSibling(), null);
+ assert_node(walker.currentNode, { type: Element, id: 'c' });
+ walker.currentNode = f;
+ assert_equals(walker.currentNode, f);
+}, 'Walk over nodes.');
+
+// FIXME: Add tests that use |whatToShow| argument and/or |filter| argument.
+</script>
+</body>
+</html>

Powered by Google App Engine
This is Rietveld 408576698