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

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

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

Powered by Google App Engine
This is Rietveld 408576698