| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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> |
| OLD | NEW |