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

Side by Side Diff: LayoutTests/fast/dom/idl-dictionary-unittest.html

Issue 1221743002: Teach Blink's IDL parser to handle defaulted sequences of strings. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@pinned
Patch Set: Add a test to LayoutTests/fast/dom/idl-dictionary-unittest.html Created 5 years, 5 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 | LayoutTests/fast/dom/idl-dictionary-unittest-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> 1 <!DOCTYPE html>
2 <script src="../../resources/js-test.js"></script> 2 <script src="../../resources/js-test.js"></script>
3 <script> 3 <script>
4 description('IDL dictionary unittest'); 4 description('IDL dictionary unittest');
5 5
6 var testObject1 = { foo: 'x' }; 6 var testObject1 = { foo: 'x' };
7 var testObject2 = { bar: 'y' }; 7 var testObject2 = { bar: 'y' };
8 8
9 if (window.internals && internals.dictionaryTest) { 9 if (window.internals && internals.dictionaryTest) {
10 var dictionaryTest = window.internals.dictionaryTest(); 10 var dictionaryTest = window.internals.dictionaryTest();
11 11
12 debug('Test for setting an empty dictionary'); 12 debug('Test for setting an empty dictionary');
13 dictionaryTest.set({}); 13 dictionaryTest.set({});
14 dict = dictionaryTest.get(); 14 dict = dictionaryTest.get();
15 shouldBeUndefined('dict.longMember'); 15 shouldBeUndefined('dict.longMember');
16 shouldBe('dict.longMemberWithDefault', '42'); 16 shouldBe('dict.longMemberWithDefault', '42');
17 shouldBeUndefined('dict.longOrNullMember'); 17 shouldBeUndefined('dict.longOrNullMember');
18 shouldBeNull('dict.longOrNullMemberWithDefault'); 18 shouldBeNull('dict.longOrNullMemberWithDefault');
19 shouldBeUndefined('dict.booleanMember'); 19 shouldBeUndefined('dict.booleanMember');
20 shouldBeUndefined('dict.doubleMember'); 20 shouldBeUndefined('dict.doubleMember');
21 shouldBeUndefined('dict.unrestrictedDoubleMember'); 21 shouldBeUndefined('dict.unrestrictedDoubleMember');
22 shouldBeUndefined('dict.stringMember'); 22 shouldBeUndefined('dict.stringMember');
23 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); 23 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue');
24 shouldBeUndefined('dict.byteStringMember'); 24 shouldBeUndefined('dict.byteStringMember');
25 shouldBeUndefined('dict.usvStringMember'); 25 shouldBeUndefined('dict.usvStringMember');
26 shouldBeUndefined('dict.stringSequenceMember'); 26 shouldBeUndefined('dict.stringSequenceMember');
27 shouldBe('dict.stringSequenceMemberWithDefault', '[]');
27 shouldBeUndefined('dict.stringSequenceOrNullMember'); 28 shouldBeUndefined('dict.stringSequenceOrNullMember');
28 shouldBeUndefined('dict.elementMember'); 29 shouldBeUndefined('dict.elementMember');
29 shouldBeUndefined('dict.elementOrNullMember'); 30 shouldBeUndefined('dict.elementOrNullMember');
30 shouldBeUndefined('dict.enumMember'); 31 shouldBeUndefined('dict.enumMember');
31 shouldBeUndefined('dict.enumArrayMember'); 32 shouldBeUndefined('dict.enumArrayMember');
32 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo'); 33 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo');
33 shouldBeUndefined('dict.enumOrNullMember'); 34 shouldBeUndefined('dict.enumOrNullMember');
34 shouldBeUndefined('dict.objectMember'); 35 shouldBeUndefined('dict.objectMember');
35 shouldBeNull('dict.objectOrNullMemberWithDefault'); 36 shouldBeNull('dict.objectOrNullMemberWithDefault');
36 shouldBeUndefined('dict.doubleOrStringMember'); 37 shouldBeUndefined('dict.doubleOrStringMember');
37 shouldBeNull('dict.eventTargetOrNullMember'); 38 shouldBeNull('dict.eventTargetOrNullMember');
38 debug(''); 39 debug('');
39 40
40 debug('Test for setting undefined'); 41 debug('Test for setting undefined');
41 dictionaryTest.set(undefined); 42 dictionaryTest.set(undefined);
42 dict = dictionaryTest.get(); 43 dict = dictionaryTest.get();
43 shouldBeUndefined('dict.longMember'); 44 shouldBeUndefined('dict.longMember');
44 shouldBe('dict.longMemberWithDefault', '42'); 45 shouldBe('dict.longMemberWithDefault', '42');
45 shouldBeUndefined('dict.longOrNullMember'); 46 shouldBeUndefined('dict.longOrNullMember');
46 shouldBeNull('dict.longOrNullMemberWithDefault'); 47 shouldBeNull('dict.longOrNullMemberWithDefault');
47 shouldBeUndefined('dict.booleanMember'); 48 shouldBeUndefined('dict.booleanMember');
48 shouldBeUndefined('dict.doubleMember'); 49 shouldBeUndefined('dict.doubleMember');
49 shouldBeUndefined('dict.unrestrictedDoubleMember'); 50 shouldBeUndefined('dict.unrestrictedDoubleMember');
50 shouldBeUndefined('dict.stringMember'); 51 shouldBeUndefined('dict.stringMember');
51 shouldBeUndefined('dict.byteStringMember'); 52 shouldBeUndefined('dict.byteStringMember');
52 shouldBeUndefined('dict.usvStringMember'); 53 shouldBeUndefined('dict.usvStringMember');
53 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); 54 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue');
54 shouldBeUndefined('dict.stringSequenceMember'); 55 shouldBeUndefined('dict.stringSequenceMember');
56 shouldBe('dict.stringSequenceMemberWithDefault', '[]');
55 shouldBeUndefined('dict.stringSequenceOrNullMember'); 57 shouldBeUndefined('dict.stringSequenceOrNullMember');
56 shouldBeUndefined('dict.elementMember'); 58 shouldBeUndefined('dict.elementMember');
57 shouldBeUndefined('dict.elementOrNullMember'); 59 shouldBeUndefined('dict.elementOrNullMember');
58 shouldBeUndefined('dict.objectMember'); 60 shouldBeUndefined('dict.objectMember');
59 shouldBeNull('dict.objectOrNullMemberWithDefault'); 61 shouldBeNull('dict.objectOrNullMemberWithDefault');
60 shouldBeNull('dict.eventTargetOrNullMember'); 62 shouldBeNull('dict.eventTargetOrNullMember');
61 debug(''); 63 debug('');
62 64
63 var element1 = document.createElement('div'); 65 var element1 = document.createElement('div');
64 66
65 debug('Test for setting valid values'); 67 debug('Test for setting valid values');
66 dictionaryTest.set({ 68 dictionaryTest.set({
67 longMember: 1, 69 longMember: 1,
68 longMemberWithDefault: 2, 70 longMemberWithDefault: 2,
69 longOrNullMember: 3, 71 longOrNullMember: 3,
70 longOrNullMemberWithDefault: 4, 72 longOrNullMemberWithDefault: 4,
71 stringMember: 'modifiedString1', 73 stringMember: 'modifiedString1',
72 stringMemberWithDefault: 'modifiedString2', 74 stringMemberWithDefault: 'modifiedString2',
73 byteStringMember: '\x00\x01\xFE\xFF', 75 byteStringMember: '\x00\x01\xFE\xFF',
74 usvStringMember: '!@#123ABCabc\xA0\uD800\uDC00', 76 usvStringMember: '!@#123ABCabc\xA0\uD800\uDC00',
75 booleanMember: true, 77 booleanMember: true,
76 doubleMember: 3.14, 78 doubleMember: 3.14,
77 unrestrictedDoubleMember: NaN, 79 unrestrictedDoubleMember: NaN,
78 stringSequenceMember: ['foo', 'bar', 'baz'], 80 stringSequenceMember: ['foo', 'bar', 'baz'],
81 stringSequenceMemberWithDefault: ['foo', 'bar', 'baz'],
79 stringSequenceOrNullMember: [], 82 stringSequenceOrNullMember: [],
80 elementMember: element1, 83 elementMember: element1,
81 elementOrNullMember: null, 84 elementOrNullMember: null,
82 enumMember: 'foo', 85 enumMember: 'foo',
83 enumMemberWithDefault: 'bar', 86 enumMemberWithDefault: 'bar',
84 enumOrNullMember: 'baz', 87 enumOrNullMember: 'baz',
85 enumArrayMember: ['foo', 'bar', 'baz'], 88 enumArrayMember: ['foo', 'bar', 'baz'],
86 objectMember: testObject1, 89 objectMember: testObject1,
87 objectOrNullMemberWithDefault: testObject2, 90 objectOrNullMemberWithDefault: testObject2,
88 doubleOrStringMember: 3.14, 91 doubleOrStringMember: 3.14,
89 eventTargetOrNullMember: element1 92 eventTargetOrNullMember: element1
90 }); 93 });
91 dict = dictionaryTest.get(); 94 dict = dictionaryTest.get();
92 shouldBe('dict.longMember', '1'); 95 shouldBe('dict.longMember', '1');
93 shouldBe('dict.longMemberWithDefault', '2'); 96 shouldBe('dict.longMemberWithDefault', '2');
94 shouldBe('dict.longOrNullMember', '3'); 97 shouldBe('dict.longOrNullMember', '3');
95 shouldBe('dict.longOrNullMemberWithDefault', '4'); 98 shouldBe('dict.longOrNullMemberWithDefault', '4');
96 shouldBeEqualToString('dict.stringMember', 'modifiedString1'); 99 shouldBeEqualToString('dict.stringMember', 'modifiedString1');
97 shouldBeEqualToString('dict.stringMemberWithDefault', 'modifiedString2'); 100 shouldBeEqualToString('dict.stringMemberWithDefault', 'modifiedString2');
98 shouldBeEqualToString('dict.byteStringMember', '\x00\x01\xFE\xFF'); 101 shouldBeEqualToString('dict.byteStringMember', '\x00\x01\xFE\xFF');
99 shouldBeEqualToString('dict.usvStringMember', '!@#123ABCabc\xA0\uD800\uDC00' ); 102 shouldBeEqualToString('dict.usvStringMember', '!@#123ABCabc\xA0\uD800\uDC00' );
100 shouldBeTrue('dict.booleanMember'); 103 shouldBeTrue('dict.booleanMember');
101 shouldBe('dict.doubleMember', '3.14'); 104 shouldBe('dict.doubleMember', '3.14');
102 shouldBe('dict.unrestrictedDoubleMember', 'NaN'); 105 shouldBe('dict.unrestrictedDoubleMember', 'NaN');
103 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]'); 106 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]');
107 shouldBe('dict.stringSequenceMemberWithDefault', '["foo", "bar", "baz"]');
104 shouldBe('dict.stringSequenceOrNullMember', '[]'); 108 shouldBe('dict.stringSequenceOrNullMember', '[]');
105 shouldBe('dict.elementMember', 'element1'); 109 shouldBe('dict.elementMember', 'element1');
106 // This will be undefined as the spec says 110 // This will be undefined as the spec says
107 shouldBeUndefined('dict.elementOrNullMember'); 111 shouldBeUndefined('dict.elementOrNullMember');
108 shouldBeEqualToString('dict.enumMember', 'foo'); 112 shouldBeEqualToString('dict.enumMember', 'foo');
109 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar'); 113 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar');
110 shouldBeEqualToString('dict.enumOrNullMember', 'baz'); 114 shouldBeEqualToString('dict.enumOrNullMember', 'baz');
111 shouldBe('dict.enumArrayMember', '["foo", "bar", "baz"]'); 115 shouldBe('dict.enumArrayMember', '["foo", "bar", "baz"]');
112 shouldBe('dict.objectMember', 'testObject1'); 116 shouldBe('dict.objectMember', 'testObject1');
113 shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2'); 117 shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2');
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 derived = dictionaryTest.getDerived(); 255 derived = dictionaryTest.getDerived();
252 shouldBeUndefined('derived.longMember'); 256 shouldBeUndefined('derived.longMember');
253 shouldBe('derived.longMemberWithDefault', '42'); 257 shouldBe('derived.longMemberWithDefault', '42');
254 shouldBeUndefined('derived.longOrNullMember'); 258 shouldBeUndefined('derived.longOrNullMember');
255 shouldBeNull('derived.longOrNullMemberWithDefault'); 259 shouldBeNull('derived.longOrNullMemberWithDefault');
256 shouldBeUndefined('derived.booleanMember'); 260 shouldBeUndefined('derived.booleanMember');
257 shouldBeUndefined('derived.doubleMember'); 261 shouldBeUndefined('derived.doubleMember');
258 shouldBeUndefined('derived.stringMember'); 262 shouldBeUndefined('derived.stringMember');
259 shouldBeEqualToString('derived.stringMemberWithDefault', 'defaultStringValue '); 263 shouldBeEqualToString('derived.stringMemberWithDefault', 'defaultStringValue ');
260 shouldBeUndefined('derived.stringSequenceMember'); 264 shouldBeUndefined('derived.stringSequenceMember');
265 shouldBe('derived.stringSequenceMemberWithDefault', '[]');
261 shouldBeUndefined('derived.stringSequenceOrNullMember'); 266 shouldBeUndefined('derived.stringSequenceOrNullMember');
262 shouldBeUndefined('derived.elementMember'); 267 shouldBeUndefined('derived.elementMember');
263 shouldBeUndefined('derived.elementOrNullMember'); 268 shouldBeUndefined('derived.elementOrNullMember');
264 shouldBeUndefined('derived.enumMember'); 269 shouldBeUndefined('derived.enumMember');
265 shouldBeEqualToString('derived.enumMemberWithDefault', 'foo'); 270 shouldBeEqualToString('derived.enumMemberWithDefault', 'foo');
266 shouldBeUndefined('derived.enumOrNullMember'); 271 shouldBeUndefined('derived.enumOrNullMember');
267 shouldBeUndefined('derived.objectMember'); 272 shouldBeUndefined('derived.objectMember');
268 shouldBeNull('derived.objectOrNullMemberWithDefault'); 273 shouldBeNull('derived.objectOrNullMemberWithDefault');
269 shouldBeUndefined('derived.derivedStringMember'); 274 shouldBeUndefined('derived.derivedStringMember');
270 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'derivedDefa ultStringValue'); 275 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'derivedDefa ultStringValue');
(...skipping 15 matching lines...) Expand all
286 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr ing3'); 291 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr ing3');
287 shouldBeUndefined('derived.invalidMember'); 292 shouldBeUndefined('derived.invalidMember');
288 shouldBeFalse('derived.requiredBooleanMember'); 293 shouldBeFalse('derived.requiredBooleanMember');
289 debug(''); 294 debug('');
290 295
291 debug('Test for passing invalid values as derived dictionary'); 296 debug('Test for passing invalid values as derived dictionary');
292 shouldThrow("dictionaryTest.setDerived({objectMember: 42, requiredBooleanMem ber: false })"); 297 shouldThrow("dictionaryTest.setDerived({objectMember: 42, requiredBooleanMem ber: false })");
293 shouldThrow("dictionaryTest.setDerived({})"); // Missing required member. 298 shouldThrow("dictionaryTest.setDerived({})"); // Missing required member.
294 } 299 }
295 </script> 300 </script>
OLDNEW
« no previous file with comments | « no previous file | LayoutTests/fast/dom/idl-dictionary-unittest-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698