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

Side by Side Diff: LayoutTests/fast/dom/NodeIterator/NodeIterator-basic.html

Issue 16865007: Make createNodeIterator() and createTreeWalker() accept default arguments. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>NodeIterator: Basic test</title>
5 <script src="../../../resources/testharness.js"></script>
6 <script src="../../../resources/testharnessreport.js"></script>
7 <link rel="stylesheet" href="../../../resources/testharness.css">
8 </head>
9 <body>
10 <p>This test checks the basic functionality of NodeIterator.</p>
11 <script>
12 function createSampleDOM()
13 {
14 // Tree order: #a -> "b" -> #c -> #d -> "e" -> #f -> "g" -> <!--h--> -> "i" -> <!--j-->.
15 var div = document.createElement('div');
16 div.id = 'a';
17 div.innerHTML = 'b<div id="c"><div id="d">e<span id="f">g<!--h--></span>i</d iv><!--j--></div>';
18 return div;
19 }
20
21 test(function ()
22 {
23 var root = createSampleDOM();
24 var iterator = document.createNodeIterator(root);
25 assert_equals(iterator.toString(), '[object NodeIterator]');
26 assert_equals(iterator.root, root);
27 assert_equals(iterator.referenceNode, root);
28 assert_equals(iterator.pointerBeforeReferenceNode, true);
29 assert_equals(iterator.whatToShow, 0xFFFFFFFF);
30 assert_equals(iterator.filter, null);
31 assert_readonly(iterator, 'root');
32 assert_readonly(iterator, 'referenceNode');
33 assert_readonly(iterator, 'pointerBeforeReferenceNode');
34 assert_readonly(iterator, 'whatToShow');
35 assert_readonly(iterator, 'filter');
36 assert_idl_attribute(iterator, 'nextNode');
37 assert_idl_attribute(iterator, 'previousNode');
38 assert_idl_attribute(iterator, 'detach');
39 }, 'Construct a NodeIterator by document.createNodeIterator().');
40
41 test(function ()
42 {
43 assert_throws(new TypeError(), function () { document.createNodeIterator(); });
44 assert_throws('NOT_SUPPORTED_ERR', function () { document.createNodeIterator (null); });
45 assert_throws('NOT_SUPPORTED_ERR', function () { document.createNodeIterator (undefined); });
46 assert_throws('NOT_SUPPORTED_ERR', function () { document.createNodeIterator (new Object()); });
47 assert_throws('NOT_SUPPORTED_ERR', function () { document.createNodeIterator (1); });
48 }, 'Give an invalid root node to document.createNodeIterator().');
49
50 // |expected| should be an object indicating the expected type of node.
51 function assert_node(actual, expected)
52 {
53 if (expected.type === 'element') {
54 assert_equals(actual.nodeType, Node.ELEMENT_NODE, '');
55 assert_equals(actual.id, expected.id);
56 } else if (expected.type == 'text') {
57 assert_equals(actual.nodeType, Node.TEXT_NODE);
58 assert_equals(actual.nodeValue, expected.content);
59 } else if (expected.type == 'comment') {
60 assert_equals(actual.nodeType, Node.COMMENT_NODE);
61 assert_equals(actual.nodeValue, expected.content);
62 } else {
63 assert_unreached();
64 }
65 }
66
67 // |expectedNodes| should be an array of objects that can be passed to |assert_n ode|.
68 function testIteratorForwardAndBackward(iterator, expectedNodes)
69 {
70 assert_equals(iterator.referenceNode, iterator.root);
71 assert_equals(iterator.pointerBeforeReferenceNode, true);
72
73 // Going forward.
74 var index = 0;
75 var node;
76 while (node = iterator.nextNode()) {
77 assert_node(node, expectedNodes[index]);
78 assert_node(iterator.referenceNode, expectedNodes[index]);
79 assert_equals(iterator.pointerBeforeReferenceNode, false);
80 ++index;
81 }
82
83 assert_equals(index, expectedNodes.length);
84 assert_equals(node, null);
85 assert_node(iterator.referenceNode, expectedNodes[expectedNodes.length - 1]) ;
86 assert_equals(iterator.pointerBeforeReferenceNode, false);
87
88 // Going backward.
89 --index;
90 while (node = iterator.previousNode()) {
91 assert_node(node, expectedNodes[index]);
92 assert_node(iterator.referenceNode, expectedNodes[index]);
93 assert_equals(iterator.pointerBeforeReferenceNode, true);
94 --index;
95 }
96
97 assert_equals(index, -1);
98 assert_equals(node, null);
99 assert_node(iterator.referenceNode, expectedNodes[0]);
100 assert_equals(iterator.pointerBeforeReferenceNode, true);
101 }
102
103 test(function ()
104 {
105 var expected = [
106 { type: 'element', id: 'a' },
Hajime Morrita 2013/06/14 00:12:15 This is rather matter of taste, but probably you c
Yuta Kitamura 2013/06/14 01:08:50 Agreed, will fix.
Yuta Kitamura 2013/06/14 01:39:58 Done.
107 { type: 'text', content: 'b' },
108 { type: 'element', id: 'c' },
109 { type: 'element', id: 'd' },
110 { type: 'text', content: 'e' },
111 { type: 'element', id: 'f' },
112 { type: 'text', content: 'g' },
113 { type: 'comment', content: 'h' },
114 { type: 'text', content: 'i' },
115 { type: 'comment', content: 'j' },
116 ];
117 var iterator = document.createNodeIterator(createSampleDOM());
118 testIteratorForwardAndBackward(iterator, expected);
119 }, 'Iterate over all nodes forward then backward.');
120
121 test(function ()
122 {
123 var expected = [
124 { type: 'element', id: 'a' },
125 { type: 'element', id: 'c' },
126 { type: 'element', id: 'd' },
127 { type: 'element', id: 'f' },
128 ];
129 var iterator = document.createNodeIterator(createSampleDOM(), NodeFilter.SHO W_ELEMENT);
130 testIteratorForwardAndBackward(iterator, expected);
131 }, 'Iterate over all elements forward then backward.');
132
133 test(function ()
134 {
135 var expected = [
136 { type: 'text', content: 'b' },
137 { type: 'text', content: 'e' },
138 { type: 'text', content: 'g' },
139 { type: 'text', content: 'i' },
140 ];
141 var iterator = document.createNodeIterator(createSampleDOM(), NodeFilter.SHO W_TEXT);
142 testIteratorForwardAndBackward(iterator, expected);
143 }, 'Iterate over all text nodes forward then backward.');
144
145 test(function ()
146 {
147 var expected = [
148 { type: 'comment', content: 'h' },
149 { type: 'comment', content: 'j' },
150 ];
151 var iterator = document.createNodeIterator(createSampleDOM(), NodeFilter.SHO W_COMMENT);
152 testIteratorForwardAndBackward(iterator, expected);
153 }, 'Iterate over all comment nodes forward then backward.');
154
155 test(function ()
156 {
157 var iterator = document.createNodeIterator(createSampleDOM(), 0);
158 assert_equals(iterator.referenceNode, iterator.root);
159 assert_equals(iterator.pointerBeforeReferenceNode, true);
160
161 assert_equals(iterator.nextNode(), null);
162 assert_equals(iterator.referenceNode, iterator.root);
163 assert_equals(iterator.pointerBeforeReferenceNode, true);
164
165 assert_equals(iterator.previousNode(), null);
166 assert_equals(iterator.referenceNode, iterator.root);
167 assert_equals(iterator.pointerBeforeReferenceNode, true);
168 }, 'Test the behavior of NodeIterator when no nodes match with the given filter. ');
169
170 test(function ()
171 {
172 var expected = [
173 { type: 'text', content: 'e' },
174 { type: 'element', id: 'f' },
175 { type: 'comment', content: 'j' },
176 ];
177 var filter = function (node) {
178 if (node.nodeType === Node.ELEMENT_NODE && node.id === 'f' ||
179 node.nodeType === Node.TEXT_NODE && node.nodeValue === 'e' ||
180 node.nodeType === Node.COMMENT_NODE && node.nodeValue === 'j') {
181 return NodeFilter.FILTER_ACCEPT;
182 }
183 return NodeFilter.FILTER_REJECT;
184 };
185 var iterator = document.createNodeIterator(createSampleDOM(), NodeFilter.SHO W_ALL, filter);
186 testIteratorForwardAndBackward(iterator, expected);
187 }, 'Test the behavior of NodeIterator when NodeFilter is specified.');
188 </script>
189 </body>
190 </html>
OLDNEW
« no previous file with comments | « no previous file | LayoutTests/fast/dom/NodeIterator/NodeIterator-basic-expected.txt » ('j') | Source/core/dom/Document.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698