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

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

Issue 765673005: IDL: Null values should be converted for non-nullable dictionary members (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: GN fix Created 6 years 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
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();
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 shouldBeEqualToString('dict.doubleOrStringMember', '[object Object]'); 117 shouldBeEqualToString('dict.doubleOrStringMember', '[object Object]');
118 dictionaryTest.set({ 118 dictionaryTest.set({
119 doubleOrStringMember: [], 119 doubleOrStringMember: [],
120 }); 120 });
121 dict = dictionaryTest.get(); 121 dict = dictionaryTest.get();
122 shouldBeEqualToString('dict.doubleOrStringMember', ''); 122 shouldBeEqualToString('dict.doubleOrStringMember', '');
123 dictionaryTest.set({ 123 dictionaryTest.set({
124 doubleOrStringMember: null, 124 doubleOrStringMember: null,
125 }); 125 });
126 dict = dictionaryTest.get(); 126 dict = dictionaryTest.get();
127 // This behavior doesn't match the spec. The spec says it should be "null"
128 // (of type string). This is an intentional mismatch; however, we might
129 // want to follow the spec at some time.
130 debug('This FAIL is intentional');
131 shouldBeEqualToString('dict.doubleOrStringMember', 'null'); 127 shouldBeEqualToString('dict.doubleOrStringMember', 'null');
132 dictionaryTest.set({ 128 dictionaryTest.set({
133 doubleOrStringMember: undefined, 129 doubleOrStringMember: undefined,
134 }); 130 });
135 dict = dictionaryTest.get(); 131 dict = dictionaryTest.get();
136 shouldBeUndefined('dict.doubleOrStringMember'); 132 shouldBeUndefined('dict.doubleOrStringMember');
137 133
138 debug(''); 134 debug('');
139 135
140 debug('Test for explicit undefined or null, and missing members'); 136 debug('Test for explicit undefined or null, and missing members');
141 dictionaryTest.set({ 137 dictionaryTest.set({
142 longMember: undefined, 138 longMember: undefined,
143 longMemberWithDefault: null, 139 longMemberWithDefault: null,
144 longOrNullMember: undefined, 140 longOrNullMember: undefined,
145 longOrNullMemberWithDefault: null, 141 longOrNullMemberWithDefault: null,
146 }); 142 });
147 dict = dictionaryTest.get(); 143 dict = dictionaryTest.get();
148 shouldBeUndefined('dict.longMember'); 144 shouldBeUndefined('dict.longMember');
149 shouldBe('dict.longMemberWithDefault', '42'); 145 // ToNumber(null) results in 0.
146 shouldBe('dict.longMemberWithDefault', '0');
147 // Passing undefined shouldn't invoke any conversion.
150 shouldBeUndefined('dict.longOrNullMember'); 148 shouldBeUndefined('dict.longOrNullMember');
151 // Nullable and its default value is null 149 // Nullable and its default value is null
152 shouldBeNull('dict.longOrNullMemberWithDefault'); 150 shouldBeNull('dict.longOrNullMemberWithDefault');
153 debug(''); 151 debug('');
154 152
155 debug('Test for setting invalid member'); 153 debug('Test for setting invalid member');
156 dictionaryTest.set({invalidMember: 'shouldNotBeSet'}); 154 dictionaryTest.set({invalidMember: 'shouldNotBeSet'});
157 dict = dictionaryTest.get(); 155 dict = dictionaryTest.get();
158 shouldBeUndefined('dict.invalidMember'); 156 shouldBeUndefined('dict.invalidMember');
159 debug(''); 157 debug('');
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 shouldBe('derived.longMember', '1'); 225 shouldBe('derived.longMember', '1');
228 shouldBeEqualToString('derived.stringMemberWithDefault', 'modifiedString'); 226 shouldBeEqualToString('derived.stringMemberWithDefault', 'modifiedString');
229 shouldBeEqualToString('derived.derivedStringMember', 'modifiedString2'); 227 shouldBeEqualToString('derived.derivedStringMember', 'modifiedString2');
230 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr ing3'); 228 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr ing3');
231 shouldBeUndefined('derived.invalidMember'); 229 shouldBeUndefined('derived.invalidMember');
232 230
233 debug(''); 231 debug('');
234 shouldThrow("dictionaryTest.setDerived({objectMember: 42})"); 232 shouldThrow("dictionaryTest.setDerived({objectMember: 42})");
235 } 233 }
236 </script> 234 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698