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

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

Issue 590443002: IDL: object type support for IDL dictionary (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 6 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
« 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' };
7 var testObject2 = { bar: 'y' };
8
6 if (window.internals && internals.dictionaryTest) { 9 if (window.internals && internals.dictionaryTest) {
7 var dictionaryTest = window.internals.dictionaryTest(); 10 var dictionaryTest = window.internals.dictionaryTest();
8 11
9 debug('Test for setting an empty dictionary'); 12 debug('Test for setting an empty dictionary');
10 dictionaryTest.set({}); 13 dictionaryTest.set({});
11 dict = dictionaryTest.get(); 14 dict = dictionaryTest.get();
12 shouldBeUndefined('dict.longMember'); 15 shouldBeUndefined('dict.longMember');
13 shouldBe('dict.longMemberWithDefault', '42'); 16 shouldBe('dict.longMemberWithDefault', '42');
14 shouldBeUndefined('dict.longOrNullMember'); 17 shouldBeUndefined('dict.longOrNullMember');
15 shouldBeNull('dict.longOrNullMemberWithDefault'); 18 shouldBeNull('dict.longOrNullMemberWithDefault');
16 shouldBeUndefined('dict.booleanMember'); 19 shouldBeUndefined('dict.booleanMember');
17 shouldBeUndefined('dict.doubleMember'); 20 shouldBeUndefined('dict.doubleMember');
18 shouldBeUndefined('dict.stringMember'); 21 shouldBeUndefined('dict.stringMember');
19 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); 22 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue');
20 shouldBeUndefined('dict.stringSequenceMember'); 23 shouldBeUndefined('dict.stringSequenceMember');
21 shouldBeUndefined('dict.stringSequenceOrNullMember'); 24 shouldBeUndefined('dict.stringSequenceOrNullMember');
22 shouldBeUndefined('dict.elementMember'); 25 shouldBeUndefined('dict.elementMember');
23 shouldBeUndefined('dict.elementOrNullMember'); 26 shouldBeUndefined('dict.elementOrNullMember');
24 shouldBeUndefined('dict.enumMember'); 27 shouldBeUndefined('dict.enumMember');
25 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo'); 28 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo');
26 shouldBeUndefined('dict.enumOrNullMember'); 29 shouldBeUndefined('dict.enumOrNullMember');
30 shouldBeUndefined('dict.objectMember');
31 shouldBeNull('dict.objectOrNullMemberWithDefault');
27 debug(''); 32 debug('');
28 33
29 debug('Test for setting undefined'); 34 debug('Test for setting undefined');
30 dictionaryTest.set(undefined); 35 dictionaryTest.set(undefined);
31 dict = dictionaryTest.get(); 36 dict = dictionaryTest.get();
32 shouldBeUndefined('dict.longMember'); 37 shouldBeUndefined('dict.longMember');
33 shouldBe('dict.longMemberWithDefault', '42'); 38 shouldBe('dict.longMemberWithDefault', '42');
34 shouldBeUndefined('dict.longOrNullMember'); 39 shouldBeUndefined('dict.longOrNullMember');
35 shouldBeNull('dict.longOrNullMemberWithDefault'); 40 shouldBeNull('dict.longOrNullMemberWithDefault');
36 shouldBeUndefined('dict.booleanMember'); 41 shouldBeUndefined('dict.booleanMember');
37 shouldBeUndefined('dict.doubleMember'); 42 shouldBeUndefined('dict.doubleMember');
38 shouldBeUndefined('dict.stringMember'); 43 shouldBeUndefined('dict.stringMember');
39 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); 44 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue');
40 shouldBeUndefined('dict.stringSequenceMember'); 45 shouldBeUndefined('dict.stringSequenceMember');
41 shouldBeUndefined('dict.stringSequenceOrNullMember'); 46 shouldBeUndefined('dict.stringSequenceOrNullMember');
42 shouldBeUndefined('dict.elementMember'); 47 shouldBeUndefined('dict.elementMember');
43 shouldBeUndefined('dict.elementOrNullMember'); 48 shouldBeUndefined('dict.elementOrNullMember');
49 shouldBeUndefined('dict.objectMember');
50 shouldBeNull('dict.objectOrNullMemberWithDefault');
44 debug(''); 51 debug('');
45 52
46 var element1 = document.createElement('div'); 53 var element1 = document.createElement('div');
47 54
48 debug('Test for setting valid values'); 55 debug('Test for setting valid values');
49 dictionaryTest.set({ 56 dictionaryTest.set({
50 longMember: 1, 57 longMember: 1,
51 longMemberWithDefault: 2, 58 longMemberWithDefault: 2,
52 longOrNullMember: 3, 59 longOrNullMember: 3,
53 longOrNullMemberWithDefault: 4, 60 longOrNullMemberWithDefault: 4,
54 stringMember: 'modifiedString1', 61 stringMember: 'modifiedString1',
55 stringMemberWithDefault: 'modifiedString2', 62 stringMemberWithDefault: 'modifiedString2',
56 booleanMember: true, 63 booleanMember: true,
57 doubleMember: 3.14, 64 doubleMember: 3.14,
58 stringSequenceMember: ['foo', 'bar', 'baz'], 65 stringSequenceMember: ['foo', 'bar', 'baz'],
59 stringSequenceOrNullMember: [], 66 stringSequenceOrNullMember: [],
60 elementMember: element1, 67 elementMember: element1,
61 elementOrNullMember: null, 68 elementOrNullMember: null,
62 enumMember: 'foo', 69 enumMember: 'foo',
63 enumMemberWithDefault: 'bar', 70 enumMemberWithDefault: 'bar',
64 enumOrNullMember: 'baz', 71 enumOrNullMember: 'baz',
72 objectMember: testObject1,
73 objectOrNullMemberWithDefault: testObject2,
65 }); 74 });
66 dict = dictionaryTest.get(); 75 dict = dictionaryTest.get();
67 shouldBe('dict.longMember', '1'); 76 shouldBe('dict.longMember', '1');
68 shouldBe('dict.longMemberWithDefault', '2'); 77 shouldBe('dict.longMemberWithDefault', '2');
69 shouldBe('dict.longOrNullMember', '3'); 78 shouldBe('dict.longOrNullMember', '3');
70 shouldBe('dict.longOrNullMemberWithDefault', '4'); 79 shouldBe('dict.longOrNullMemberWithDefault', '4');
71 shouldBeEqualToString('dict.stringMember', 'modifiedString1'); 80 shouldBeEqualToString('dict.stringMember', 'modifiedString1');
72 shouldBeEqualToString('dict.stringMemberWithDefault', 'modifiedString2'); 81 shouldBeEqualToString('dict.stringMemberWithDefault', 'modifiedString2');
73 shouldBeTrue('dict.booleanMember'); 82 shouldBeTrue('dict.booleanMember');
74 shouldBe('dict.doubleMember', '3.14'); 83 shouldBe('dict.doubleMember', '3.14');
75 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]'); 84 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]');
76 shouldBe('dict.stringSequenceOrNullMember', '[]'); 85 shouldBe('dict.stringSequenceOrNullMember', '[]');
77 shouldBe('dict.elementMember', 'element1'); 86 shouldBe('dict.elementMember', 'element1');
78 // This will be undefined as the spec says 87 // This will be undefined as the spec says
79 shouldBeUndefined('dict.elementOrNullMember'); 88 shouldBeUndefined('dict.elementOrNullMember');
80 shouldBeEqualToString('dict.enumMember', 'foo'); 89 shouldBeEqualToString('dict.enumMember', 'foo');
81 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar'); 90 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar');
82 shouldBeEqualToString('dict.enumOrNullMember', 'baz'); 91 shouldBeEqualToString('dict.enumOrNullMember', 'baz');
92 shouldBe('dict.objectMember', 'testObject1');
93 shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2');
83 debug(''); 94 debug('');
84 95
85 debug('Test for explicit undefined or null, and missing members'); 96 debug('Test for explicit undefined or null, and missing members');
86 dictionaryTest.set({ 97 dictionaryTest.set({
87 longMember: undefined, 98 longMember: undefined,
88 longMemberWithDefault: null, 99 longMemberWithDefault: null,
89 longOrNullMember: undefined, 100 longOrNullMember: undefined,
90 longOrNullMemberWithDefault: null, 101 longOrNullMemberWithDefault: null,
91 }); 102 });
92 dict = dictionaryTest.get(); 103 dict = dictionaryTest.get();
93 shouldBeUndefined('dict.longMember'); 104 shouldBeUndefined('dict.longMember');
94 shouldBe('dict.longMemberWithDefault', '42'); 105 shouldBe('dict.longMemberWithDefault', '42');
95 shouldBeUndefined('dict.longOrNullMember'); 106 shouldBeUndefined('dict.longOrNullMember');
96 // Nullable and its default value is null 107 // Nullable and its default value is null
97 shouldBeNull('dict.longOrNullMemberWithDefault'); 108 shouldBeNull('dict.longOrNullMemberWithDefault');
98 debug(''); 109 debug('');
99 110
100 debug('Test for setting invalid member'); 111 debug('Test for setting invalid member');
101 dictionaryTest.set({invalidMember: 'shouldNotBeSet'}); 112 dictionaryTest.set({invalidMember: 'shouldNotBeSet'});
102 dict = dictionaryTest.get(); 113 dict = dictionaryTest.get();
103 shouldBeUndefined('dict.invalidMember'); 114 shouldBeUndefined('dict.invalidMember');
104 debug(''); 115 debug('');
105 116
106 debug('Test for setting invalid enum value'); 117 debug('Test for setting invalid enum value');
107 shouldThrow("dictionaryTest.set({enumMember: 'invalid'})"); 118 shouldThrow("dictionaryTest.set({enumMember: 'invalid'})");
108 debug(''); 119 debug('');
109 120
121 debug('Test for setting invalid object value');
122 shouldThrow("dictionaryTest.set({objectMember: 42})");
123 shouldThrow("dictionaryTest.set({objectMember: 'invalid'})");
124 debug('');
125
110 debug('Test for passing invalid dictionary values'); 126 debug('Test for passing invalid dictionary values');
111 shouldThrow("dictionaryTest.set(42)"); 127 shouldThrow("dictionaryTest.set(42)");
112 shouldThrow("dictionaryTest.set('string')"); 128 shouldThrow("dictionaryTest.set('string')");
113 debug(''); 129 debug('');
114 } 130 }
115 </script> 131 </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