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

Side by Side Diff: LayoutTests/fast/css/variables/cssom-foreach-update.html

Issue 21006006: Add forEach() to CSSVariablesMap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase and review changes Created 7 years, 2 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 <head><script src="../../js/resources/js-test-pre.js"></script></head>
3
4 <div id="test"></div>
5
6 <script>
7 description('This tests expected behaviour when modifying variables in a CSSVari ablesMap during a forEach() loop.');
8
9 // Test adding variable in forEach: pass
10 // Test deleting in forEach: pass
11 // Test clearing in forEach: pass
12 // Test adding then deleting in forEach: pass
13 // Test adding then clearing in forEach: pass
14 // Test deleting then adding in forEach: pass
15 // Test clearing then adding in forEach: pass
16 // Test updating visited variable in forEach: pass
17
18
19 var div = document.querySelector('#test');
20 var log;
21
22 function logIteration(name, value, nested)
23 {
24 if (nested)
25 log.push('Nested iteration (var-' + name + ': ' + value + ')');
26 else
27 log.push('Iteration (var-' + name + ': ' + value + ')');
28 }
29
30 debug('\nTest adding variable in forEach() over "var-existing: pass;"');
31 log = [];
32 div.style.var.set('existing', 'pass');
33 div.style.var.forEach(function(value, name, varMap) {
34 logIteration(name, value);
35 if (name === 'existing') {
36 log.push('Add variable (var-added: pass)');
37 varMap.set('added', 'pass');
38 }
39 });
40 shouldBeEqualToString('log[0]', 'Iteration (var-existing: pass)');
41 shouldBeEqualToString('log[1]', 'Add variable (var-added: pass)');
42 shouldBeEqualToString('log[2]', 'Iteration (var-added: pass)');
43 shouldBe('log.length', '3');
44
45 debug('\nTest deleting variable in forEach() over "var-existing: pass; var-to-de lete: fail;"');
46 div.style.var.clear();
47 div.style.var.set('existing', 'pass');
48 div.style.var.set('to-delete', 'fail');
49 log = [];
50 div.style.var.forEach(function(value, name, varMap) {
51 logIteration(name, value);
52 if (name === 'existing') {
53 log.push('Delete variable (var-to-delete)');
54 varMap.delete('to-delete');
55 }
56 });
57 shouldBeEqualToString('log[0]', 'Iteration (var-existing: pass)');
58 shouldBeEqualToString('log[1]', 'Delete variable (var-to-delete)');
59 shouldBe('log.length', '2');
60
61 debug('\nTest clearing variables in forEach() over "var-existing: pass; var-to-c lear: fail;"');
62 div.style.var.clear();
63 div.style.var.set('existing', 'pass');
64 div.style.var.set('to-clear', 'fail');
65 log = [];
66 div.style.var.forEach(function(value, name, varMap) {
67 logIteration(name, value);
68 if (name === 'existing') {
69 log.push('Clear variables');
70 varMap.clear();
71 }
72 });
73 shouldBeEqualToString('log[0]', 'Iteration (var-existing: pass)');
74 shouldBeEqualToString('log[1]', 'Clear variables');
75 shouldBe('log.length', '2');
76
77 debug('\nTest adding then deleting in forEach() over "var-existing: pass;"');
78 div.style.var.clear();
79 div.style.var.set('existing', 'pass');
80 log = [];
81 div.style.var.forEach(function(value, name, varMap) {
82 logIteration(name, value);
83 if (name === 'existing') {
84 log.push('Add variable (var-to-delete: fail)');
85 varMap.set('to-delete', 'fail');
86 log.push('Delete variable (var-to-delete)');
87 varMap.delete('to-delete');
88 }
89 });
90 shouldBeEqualToString('log[0]', 'Iteration (var-existing: pass)');
91 shouldBeEqualToString('log[1]', 'Add variable (var-to-delete: fail)');
92 shouldBeEqualToString('log[2]', 'Delete variable (var-to-delete)');
93 shouldBe('log.length', '3');
94
95 debug('\nTest adding then clearing in forEach() over "var-existing: pass;"');
96 div.style.var.clear();
97 div.style.var.set('existing', 'pass');
98 log = [];
99 div.style.var.forEach(function(value, name, varMap) {
100 logIteration(name, value);
101 if (name === 'existing') {
102 log.push('Add variable (var-to-clear: fail)');
103 varMap.set('to-clear', 'fail');
104 log.push('Clear variables (var-to-clear)');
105 varMap.clear('to-clear');
106 }
107 });
108 shouldBeEqualToString('log[0]', 'Iteration (var-existing: pass)');
109 shouldBeEqualToString('log[1]', 'Add variable (var-to-clear: fail)');
110 shouldBeEqualToString('log[2]', 'Clear variables (var-to-clear)');
111 shouldBe('log.length', '3');
112
113 debug('\nTest deleting then adding in forEach() over "var-existing: pass; var-to -delete: fail;"');
114 div.style.var.clear();
115 div.style.var.set('existing', 'pass');
116 div.style.var.set('to-delete', 'fail');
117 log = [];
118 div.style.var.forEach(function(value, name, varMap) {
119 logIteration(name, value);
120 if (name === 'existing') {
121 log.push('Delete variable (var-to-delete)');
122 varMap.delete('to-delete');
123 log.push('Add variable (var-added: pass)');
124 varMap.set('added', 'pass');
125 }
126 });
127 shouldBeEqualToString('log[0]', 'Iteration (var-existing: pass)');
128 shouldBeEqualToString('log[1]', 'Delete variable (var-to-delete)');
129 shouldBeEqualToString('log[2]', 'Add variable (var-added: pass)');
130 shouldBeEqualToString('log[3]', 'Iteration (var-added: pass)');
131 shouldBe('log.length', '4');
132
133 debug('\nTest clearing then adding in forEach() over "var-existing: pass; var-to -clear: fail;"');
134 div.style.var.clear();
135 div.style.var.set('existing', 'pass');
136 div.style.var.set('to-clear', 'fail');
137 log = [];
138 div.style.var.forEach(function(value, name, varMap) {
139 logIteration(name, value);
140 if (name === 'existing') {
141 log.push('Clear variables');
142 varMap.clear();
143 log.push('Add variable (var-added: pass)');
144 varMap.set('added', 'pass');
145 }
146 });
147 shouldBeEqualToString('log[0]', 'Iteration (var-existing: pass)');
148 shouldBeEqualToString('log[1]', 'Clear variables');
149 shouldBeEqualToString('log[2]', 'Add variable (var-added: pass)');
150 shouldBeEqualToString('log[3]', 'Iteration (var-added: pass)');
151 shouldBe('log.length', '4');
152
153 debug('\nTest updating visited variable in forEach() over "var-existing-a: pass; var-existing-b: pass;"');
154 div.style.var.clear();
155 div.style.var.set('existing-a', 'pass');
156 div.style.var.set('existing-b', 'pass');
157 log = [];
158 div.style.var.forEach(function(value, name, varMap) {
159 logIteration(name, value);
160 if (name === 'existing-b') {
161 log.push('Set variable (var-existing-a: fail)');
162 varMap.set('existing-a', 'fail');
163 }
164 });
165 shouldBeEqualToString('log[0]', 'Iteration (var-existing-a: pass)');
166 shouldBeEqualToString('log[1]', 'Iteration (var-existing-b: pass)');
167 shouldBeEqualToString('log[2]', 'Set variable (var-existing-a: fail)');
168 shouldBe('log.length', '3');
169
170 debug('\nTest nested forEach calls with addition and deletion() over "var-existi ng-a: pass; var-existing-b: pass;"');
171 div.style.var.clear();
172 div.style.var.set('existing-a', 'pass');
173 div.style.var.set('existing-b', 'pass');
174 log = [];
175 div.style.var.forEach(function(value, name, varMap) {
176 logIteration(name, value);
177 log.push('Call forEach()');
178 varMap.forEach(function(innerValue, innerName) {
179 logIteration(innerName, innerValue, true);
180 if (name === 'existing-a' && innerName === 'existing-b') {
181 log.push('Delete variable (var-existing-b)');
182 varMap.delete('existing-b');
183 log.push('Add variable (var-inner-added: pass)');
184 varMap.set('inner-added', 'pass');
185 }
186 });
187 });
188 shouldBeEqualToString('log[0]', 'Iteration (var-existing-a: pass)');
189 shouldBeEqualToString('log[1]', 'Call forEach()');
190 shouldBeEqualToString('log[2]', 'Nested iteration (var-existing-a: pass)');
191 shouldBeEqualToString('log[3]', 'Nested iteration (var-existing-b: pass)');
192 shouldBeEqualToString('log[4]', 'Delete variable (var-existing-b)');
193 shouldBeEqualToString('log[5]', 'Add variable (var-inner-added: pass)');
194 shouldBeEqualToString('log[6]', 'Nested iteration (var-inner-added: pass)');
195 shouldBeEqualToString('log[7]', 'Iteration (var-inner-added: pass)');
196 shouldBeEqualToString('log[8]', 'Call forEach()');
197 shouldBeEqualToString('log[9]', 'Nested iteration (var-existing-a: pass)');
198 shouldBeEqualToString('log[10]', 'Nested iteration (var-inner-added: pass)');
199 shouldBe('log.length', '11');
200
201 debug('');
202 </script>
203 <script src="../../js/resources/js-test-post.js"></script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698