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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/dom/dataset-svg.html

Issue 2231053003: Add dataset property to SVGElement interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added test Created 4 years, 4 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
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src="../../resources/testharness.js"></script>
pdr. 2016/08/24 18:42:15 This test copies fast/dom/script-tests/dataset.js.
ramya.v 2016/08/25 10:51:33 If we wrap this way, getting the below error at li
3 <script src="../../resources/testharnessreport.js"></script>
4 <body>
5 <script>
6 var svgNS = "http://www.w3.org/2000/svg";
7
8 function getSVGCircle(c) {
9 c = document.createElementNS(svgNS,"circle");
10 c.setAttributeNS(null, "cx", 25);
11 c.setAttributeNS(null, "cy", 25);
12 c.setAttributeNS(null, "r", 20);
13 return c;
14 }
15
16 function testGet(attr, expected)
17 {
18 var c = getSVGCircle(c);
19 c.setAttribute(attr, "value");
20 return c.dataset[expected] == "value";
21 }
22
23 test (function() {
24 assert_true(testGet('data-foo', 'foo'));
25 assert_true(testGet('data-foo-bar', 'fooBar'));
26 assert_true(testGet('data--', '-'));
27 assert_true(testGet('data--foo', 'Foo'));
28 assert_true(testGet('data---foo', '-Foo'));
29 assert_true(testGet('data---foo--bar', '-Foo-Bar'));
30 assert_true(testGet('data---foo---bar', '-Foo--Bar'));
31 assert_true(testGet('data-foo-', 'foo-'));
32 assert_true(testGet('data-foo--', 'foo--'));
33 assert_true(testGet('data-Foo', 'Foo'));
34 assert_true(testGet('data-', ''));
35 assert_true(testGet('data-\xE0', '\xE0'));
36 assert_true(testGet('data-1', '1'));
37 assert_true(testGet('data-01', '01'));
38 assert_true(testGet('data-zx81', 'zx81'));
39 assert_true(testGet('data-i4770k', 'i4770k'));
40 assert_true(testGet('data-r-7', 'r-7'));
41 assert_true(testGet('data-r-7-k', 'r-7K'));
42 assert_equals(document.body.dataset.nonExisting, undefined);
43 },'This tests Get function');
44
45
46 function testIsUndefined(attr, prop)
47 {
48 var c = getSVGCircle(c);
49 c.setAttribute(attr, "value");
50 return c.dataset[prop] === undefined;
51 }
52
53 test (function() {
54 assert_true(testIsUndefined('data-022', '22'));
55 assert_true(testIsUndefined('data-22', '022'));
56 },'Tests Undefined');
57
58
59 function matchesNothingInDataset(attr)
60 {
61 var c = getSVGCircle(c);
62 c.setAttribute(attr, "value");
63
64 var count = 0;
65 for (var item in c.dataset)
66 count++;
67 return count == 0;
68 }
69
70 test (function() {
71 assert_true(matchesNothingInDataset('dataFoo'));
72 },'Tests matchesNothingInDataset');
73
74
75 function testSet(prop, expected)
76 {
77 var c = getSVGCircle(c);
78 c.dataset[prop] = "value";
79 return c.getAttribute(expected) == "value";
80 }
81
82 test (function() {
83 assert_true(testSet('foo', 'data-foo'));
84 assert_true(testSet('fooBar', 'data-foo-bar'));
85 assert_true(testSet('-', 'data--'));
86 assert_true(testSet('Foo', 'data--foo'));
87 assert_true(testSet('-Foo', 'data---foo'));
88 assert_true(testSet('', 'data-'));
89 assert_true(testSet('\xE0', 'data-\xE0'));
90 assert_true(testSet('32', 'data-32'));
91 assert_true(testSet('0032', 'data-0032'));
92 assert_true(testSet('i18n', 'data-i18n'));
93 assert_true(testSet('d2', 'data-d2'));
94 assert_true(testSet('2d', 'data-2d'));
95 assert_true(testSet('d-2', 'data-d-2'));
96 assert_true(testSet('A--S', 'data--a---s'));
97 assert_throws(null, function() { testSet('-foo', 'dummy'); }, '"SyntaxEr ror: Failed to set the \'-foo\' property on \'DOMStringMap\': \'-foo\' is not a valid property name."');
98 assert_throws(null, function() { testSet('foo\x20', 'dummy'); }, '"Inval idCharacterError: Failed to set the \'foo\x20\' property on \'DOMStringMap\': \' data-foo\x20\' is not a valid attribute name."');
99 assert_throws(null, function() { testSet('foo\uF900', 'dummy'); }, '"Inv alidCharacterError: Failed to set the \'foo\uF900\' property on \'DOMStringMap\' : \'data-foo\uF900\' is not a valid attribute name."');
100 },'Tests Set');
101
102
103 function testIsNull(prop, attr)
104 {
105 var c = getSVGCircle(c);
106 c.dataset[prop] = "value";
107 return c.getAttribute(attr) === null;
108 }
109
110 test (function() {
111 assert_true(testIsNull('0123', 'data-123'));
112 assert_true(testIsNull('123', 'data-0123'));
113 },'Tests Is Null');
114
115
116 function testDelete(attr, prop)
117 {
118 var c = getSVGCircle(c);
119 c.setAttribute(attr, "value");
120 delete c.dataset[prop];
121 return c.getAttribute(attr) != "value";
122 }
123
124 test (function() {
125 assert_true(testDelete('data-foo', 'foo'));
126 assert_true(testDelete('data-foo-bar', 'fooBar'));
127 assert_true(testDelete('data--', '-'));
128 assert_true(testDelete('data--foo', 'Foo'));
129 assert_true(testDelete('data---foo', '-Foo'));
130 assert_true(testDelete('data-', ''));
131 assert_true(testDelete('data-\xE0', '\xE0'));
132 assert_true(testDelete('data-33', '33'));
133 assert_true(testDelete('data-00033', '00033'));
134 assert_true(testDelete('data-r2', 'r2'));
135 assert_true(testDelete('data-2r', '2r'));
136 assert_true(testDelete('data-r-2', 'r-2'));
137 assert_true(testDelete('data--r-2-', 'R-2-'));
138 assert_true(testDelete('data--r-2r', 'R-2r'));
139 assert_true(testDelete('data--r-2-----r', 'R-2----R'));
140 assert_false(testDelete('dummy', '-foo'));
141 },'Tests Delete');
142
143
144
145 // The SVGElement.dataset deleter is only applied to properties
146 // that are present; check that any underlying native property
147 // is deleted instead.
148 function testNativeDelete(prop, isConfigurable)
149 {
150 var c = getSVGCircle(c);
151 Object.defineProperty(c.dataset, prop, {configurable: isConfigurable, value: "native_value"});
152 delete c.dataset[prop];
153 return isConfigurable ? !(prop in c.dataset) : (c.dataset[prop] === "native_ value");
154 }
155
156 test (function() {
157 // TODO(jochen): Reenable this once it behaves correctly
158 //assert_true(testNativeDelete('-r-2-', false));
159 assert_true(testNativeDelete('foo', true));
160 },'Tests Native Delete');
161
162
163 function testForIn(array)
164 {
165 var c = getSVGCircle(c);
166 for (var i = 0; i < array.length; ++i) {
167 c.setAttribute(array[i], "value");
168 }
169
170 var count = 0;
171 for (var item in c.dataset)
172 count++;
173
174 return count;
175 }
176
177 test (function() {
178 assert_equals(testForIn(['data-foo', 'data-bar', 'data-baz']), 3);
179 assert_equals(testForIn(['data-foo', 'data-bar', 'dataFoo']), 2);
180 assert_equals(testForIn(['data-foo', 'data-bar', 'style']), 2);
181 assert_equals(testForIn(['data-foo', 'data-bar', 'data-']), 3);
182 assert_equals(testForIn(['data-foo', 'data-bar', 'data-43']), 3);
183 assert_equals(testForIn(['data-foo', 'data-oric1', 'data-bar']), 3);
184 assert_equals(testForIn(['data-foo', 'data-oric-1', 'data-bar']), 3);
185 assert_equals(testForIn(['data-foo', 'data-oric-1x', 'data-bar']), 3);
186 },'Tests For In');
187
188 test (function() {
189 var c = getSVGCircle(c);
190
191 // If the Object prototype already has "foo", dataset doesnot create the corresponding attribute for foo
192 Object.prototype.foo = 'on Object';
193 assert_equals(c.dataset.foo, 'on Object');
194 c.dataset['foo'] = 'on dataset';
195 assert_equals(c.dataset.foo, 'on dataset');
196 assert_true(c.hasAttribute('data-foo'));
197 c.setAttribute('data-foo', 'attr');
198 assert_equals(c.dataset.foo, 'attr');
199
200 // Update the JavaScript property
201 c.dataset.foo = 'updated';
202 assert_equals(c.dataset.foo, 'updated');
203 assert_equals(c.getAttribute('data-foo'), 'updated');
204
205 // "Bar" can't be represented as a data- attribute.
206 c.dataset.Bar = 'on dataset';
207 assert_equals(c.dataset.Bar, 'on dataset');
208 assert_false(c.hasAttribute('data-Bar'));
209
210 // Make the JavaScript property empty
211 c.dataset.foo = '';
212 assert_equals(c.dataset.foo, '');
213 assert_equals(c.getAttribute('data-foo'), '');
214
215 // Remove the attribute
216 c.removeAttribute('data-foo');
217 assert_equals(c.dataset.foo, 'on Object');
218
219 // Remove the JavaScript property
220 c.setAttribute('data-foo', 'attr');
221 delete c.dataset.foo;
222 assert_equals(c.dataset.foo, 'on Object');
223 assert_false(c.hasAttribute('foo'));
224 delete c.dataset.Bar;
225 assert_equals(c.dataset.Bar, undefined);
226 Object.prototype[11] = 'on Object';
227 assert_equals(c.dataset[11], 'on Object');
228 c.dataset['11'] = 'on dataset';
229 assert_equals(c.dataset[11], 'on dataset');
230 assert_true(c.hasAttribute('data-11'));
231 c.setAttribute('data-11', 'attr');
232 assert_equals(c.dataset[11], 'attr');
233
234 // Update the JavaScript property
235 c.dataset[11] = 'updated';
236 assert_equals(c.dataset[11], 'updated');
237 assert_equals(c.getAttribute('data-11'), 'updated');
238
239 Object.prototype['a500'] = 'on Object';
240 assert_equals(c.dataset['a500'], 'on Object');
241 c.dataset['a500'] = 'on dataset';
242 assert_equals(c.dataset['a500'], 'on dataset');
243 assert_true(c.hasAttribute('data-a500'));
244 c.setAttribute('data-a500', 'attr');
245 assert_equals(c.dataset['a500'], 'attr');
246
247 // Update the JavaScript property
248 c.dataset['a500'] = 'updated';
249 assert_equals(c.dataset['a500'], 'updated');
250 assert_equals(c.getAttribute('data-a500'), 'updated');
251 Object.prototype['a-500k'] = 'on Object';
252 assert_equals(c.dataset['a-500k'], 'on Object');
253 c.dataset['a-500k'] = 'on dataset';
254 assert_equals(c.dataset['a-500k'], 'on dataset');
255 assert_true(c.hasAttribute('data-a-500k'));
256 c.setAttribute('data-a-500k', 'attr');
257 assert_equals(c.dataset['a-500k'], 'attr');
258
259 // Update the JavaScript property
260 c.dataset['a-500k'] = 'updated';
261 assert_equals(c.dataset['a-500k'], 'updated');
262 assert_equals(c.getAttribute('data-a-500k'), 'updated');
263
264 },'');
265
266 test (function() {
267 var c = getSVGCircle(c);
268 c.dataset.foo = null;
269 assert_equals(c.dataset.foo, 'null');
270 },'Set null');
271 </script>
272 </body>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698