| 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(); |
| 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 shouldBeNull('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 shouldBe('dict.stringSequenceMemberWithDefault', '[]'); |
| 28 shouldBeUndefined('dict.stringSequenceOrNullMember'); | 28 shouldBeNull('dict.stringSequenceOrNullMember'); |
| 29 shouldBeUndefined('dict.elementMember'); | 29 shouldBeUndefined('dict.elementMember'); |
| 30 shouldBeUndefined('dict.elementOrNullMember'); | 30 shouldBeNull('dict.elementOrNullMember'); |
| 31 shouldBeUndefined('dict.enumMember'); | 31 shouldBeUndefined('dict.enumMember'); |
| 32 shouldBeUndefined('dict.enumArrayMember'); | 32 shouldBeUndefined('dict.enumArrayMember'); |
| 33 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo'); | 33 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo'); |
| 34 shouldBeUndefined('dict.enumOrNullMember'); | 34 shouldBeNull('dict.enumOrNullMember'); |
| 35 shouldBeUndefined('dict.objectMember'); | 35 shouldBeUndefined('dict.objectMember'); |
| 36 shouldBeNull('dict.objectOrNullMemberWithDefault'); | 36 shouldBeNull('dict.objectOrNullMemberWithDefault'); |
| 37 shouldBeUndefined('dict.doubleOrStringMember'); | 37 shouldBeUndefined('dict.doubleOrStringMember'); |
| 38 shouldBeUndefined('dict.doubleOrStringSequenceMember'); | 38 shouldBeUndefined('dict.doubleOrStringSequenceMember'); |
| 39 shouldBeNull('dict.eventTargetOrNullMember'); | 39 shouldBeNull('dict.eventTargetOrNullMember'); |
| 40 debug(''); | 40 debug(''); |
| 41 | 41 |
| 42 debug('Test for setting undefined'); | 42 debug('Test for setting undefined'); |
| 43 dictionaryTest.set(undefined); | 43 dictionaryTest.set(undefined); |
| 44 dict = dictionaryTest.get(); | 44 dict = dictionaryTest.get(); |
| 45 shouldBeUndefined('dict.longMember'); | 45 shouldBeUndefined('dict.longMember'); |
| 46 shouldBe('dict.longMemberWithDefault', '42'); | 46 shouldBe('dict.longMemberWithDefault', '42'); |
| 47 shouldBeUndefined('dict.longOrNullMember'); | 47 shouldBeNull('dict.longOrNullMember'); |
| 48 shouldBeNull('dict.longOrNullMemberWithDefault'); | 48 shouldBeNull('dict.longOrNullMemberWithDefault'); |
| 49 shouldBeUndefined('dict.booleanMember'); | 49 shouldBeUndefined('dict.booleanMember'); |
| 50 shouldBeUndefined('dict.doubleMember'); | 50 shouldBeUndefined('dict.doubleMember'); |
| 51 shouldBeUndefined('dict.unrestrictedDoubleMember'); | 51 shouldBeUndefined('dict.unrestrictedDoubleMember'); |
| 52 shouldBeUndefined('dict.stringMember'); | 52 shouldBeUndefined('dict.stringMember'); |
| 53 shouldBeUndefined('dict.byteStringMember'); | 53 shouldBeUndefined('dict.byteStringMember'); |
| 54 shouldBeUndefined('dict.usvStringMember'); | 54 shouldBeUndefined('dict.usvStringMember'); |
| 55 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); | 55 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); |
| 56 shouldBeUndefined('dict.stringSequenceMember'); | 56 shouldBeUndefined('dict.stringSequenceMember'); |
| 57 shouldBe('dict.stringSequenceMemberWithDefault', '[]'); | 57 shouldBe('dict.stringSequenceMemberWithDefault', '[]'); |
| 58 shouldBeUndefined('dict.stringSequenceOrNullMember'); | 58 shouldBeNull('dict.stringSequenceOrNullMember'); |
| 59 shouldBeUndefined('dict.elementMember'); | 59 shouldBeUndefined('dict.elementMember'); |
| 60 shouldBeUndefined('dict.elementOrNullMember'); | 60 shouldBeNull('dict.elementOrNullMember'); |
| 61 shouldBeUndefined('dict.objectMember'); | 61 shouldBeUndefined('dict.objectMember'); |
| 62 shouldBeNull('dict.objectOrNullMemberWithDefault'); | 62 shouldBeNull('dict.objectOrNullMemberWithDefault'); |
| 63 shouldBeNull('dict.eventTargetOrNullMember'); | 63 shouldBeNull('dict.eventTargetOrNullMember'); |
| 64 debug(''); | 64 debug(''); |
| 65 | 65 |
| 66 var element1 = document.createElement('div'); | 66 var element1 = document.createElement('div'); |
| 67 | 67 |
| 68 debug('Test for setting valid values'); | 68 debug('Test for setting valid values'); |
| 69 dictionaryTest.set({ | 69 dictionaryTest.set({ |
| 70 longMember: 1, | 70 longMember: 1, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 shouldBeEqualToString('dict.byteStringMember', '\x00\x01\xFE\xFF'); | 103 shouldBeEqualToString('dict.byteStringMember', '\x00\x01\xFE\xFF'); |
| 104 shouldBeEqualToString('dict.usvStringMember', '!@#123ABCabc\xA0\uD800\uDC00'
); | 104 shouldBeEqualToString('dict.usvStringMember', '!@#123ABCabc\xA0\uD800\uDC00'
); |
| 105 shouldBeTrue('dict.booleanMember'); | 105 shouldBeTrue('dict.booleanMember'); |
| 106 shouldBe('dict.doubleMember', '3.14'); | 106 shouldBe('dict.doubleMember', '3.14'); |
| 107 shouldBe('dict.unrestrictedDoubleMember', 'NaN'); | 107 shouldBe('dict.unrestrictedDoubleMember', 'NaN'); |
| 108 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]'); | 108 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]'); |
| 109 shouldBe('dict.stringSequenceMemberWithDefault', '["foo", "bar", "baz"]'); | 109 shouldBe('dict.stringSequenceMemberWithDefault', '["foo", "bar", "baz"]'); |
| 110 shouldBe('dict.stringSequenceOrNullMember', '[]'); | 110 shouldBe('dict.stringSequenceOrNullMember', '[]'); |
| 111 shouldBe('dict.elementMember', 'element1'); | 111 shouldBe('dict.elementMember', 'element1'); |
| 112 // This will be undefined as the spec says | 112 // This will be undefined as the spec says |
| 113 shouldBeUndefined('dict.elementOrNullMember'); | 113 shouldBeNull('dict.elementOrNullMember'); |
| 114 shouldBeEqualToString('dict.enumMember', 'foo'); | 114 shouldBeEqualToString('dict.enumMember', 'foo'); |
| 115 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar'); | 115 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar'); |
| 116 shouldBeEqualToString('dict.enumOrNullMember', 'baz'); | 116 shouldBeEqualToString('dict.enumOrNullMember', 'baz'); |
| 117 shouldBe('dict.enumArrayMember', '["foo", "bar", "baz"]'); | 117 shouldBe('dict.enumArrayMember', '["foo", "bar", "baz"]'); |
| 118 shouldBe('dict.objectMember', 'testObject1'); | 118 shouldBe('dict.objectMember', 'testObject1'); |
| 119 shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2'); | 119 shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2'); |
| 120 shouldBe('dict.doubleOrStringMember', '3.14'); | 120 shouldBe('dict.doubleOrStringMember', '3.14'); |
| 121 shouldBe('dict.doubleOrStringSequenceMember', '[3.14, "Hello"]'); | 121 shouldBe('dict.doubleOrStringSequenceMember', '[3.14, "Hello"]'); |
| 122 shouldBe('dict.eventTargetOrNullMember', 'element1'); | 122 shouldBe('dict.eventTargetOrNullMember', 'element1'); |
| 123 debug(''); | 123 debug(''); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 longMember: undefined, | 156 longMember: undefined, |
| 157 longMemberWithDefault: null, | 157 longMemberWithDefault: null, |
| 158 longOrNullMember: undefined, | 158 longOrNullMember: undefined, |
| 159 longOrNullMemberWithDefault: null, | 159 longOrNullMemberWithDefault: null, |
| 160 }); | 160 }); |
| 161 dict = dictionaryTest.get(); | 161 dict = dictionaryTest.get(); |
| 162 shouldBeUndefined('dict.longMember'); | 162 shouldBeUndefined('dict.longMember'); |
| 163 // ToNumber(null) results in 0. | 163 // ToNumber(null) results in 0. |
| 164 shouldBe('dict.longMemberWithDefault', '0'); | 164 shouldBe('dict.longMemberWithDefault', '0'); |
| 165 // Passing undefined shouldn't invoke any conversion. | 165 // Passing undefined shouldn't invoke any conversion. |
| 166 shouldBeUndefined('dict.longOrNullMember'); | 166 shouldBeNull('dict.longOrNullMember'); |
| 167 // Nullable and its default value is null | 167 // Nullable and its default value is null |
| 168 shouldBeNull('dict.longOrNullMemberWithDefault'); | 168 shouldBeNull('dict.longOrNullMemberWithDefault'); |
| 169 debug(''); | 169 debug(''); |
| 170 | 170 |
| 171 debug('Test for setting invalid member'); | 171 debug('Test for setting invalid member'); |
| 172 dictionaryTest.set({invalidMember: 'shouldNotBeSet'}); | 172 dictionaryTest.set({invalidMember: 'shouldNotBeSet'}); |
| 173 dict = dictionaryTest.get(); | 173 dict = dictionaryTest.get(); |
| 174 shouldBeUndefined('dict.invalidMember'); | 174 shouldBeUndefined('dict.invalidMember'); |
| 175 debug(''); | 175 debug(''); |
| 176 | 176 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 shouldBe('properties', '{}'); | 266 shouldBe('properties', '{}'); |
| 267 shouldThrow("dictionaryTest.set({dictionaryMember: 42})"); | 267 shouldThrow("dictionaryTest.set({dictionaryMember: 42})"); |
| 268 shouldThrow("dictionaryTest.set({dictionaryMember: 'foo'})"); | 268 shouldThrow("dictionaryTest.set({dictionaryMember: 'foo'})"); |
| 269 debug(''); | 269 debug(''); |
| 270 | 270 |
| 271 debug('Test for derived dictionary'); | 271 debug('Test for derived dictionary'); |
| 272 dictionaryTest.setDerived({ requiredBooleanMember: true }); | 272 dictionaryTest.setDerived({ requiredBooleanMember: true }); |
| 273 derived = dictionaryTest.getDerived(); | 273 derived = dictionaryTest.getDerived(); |
| 274 shouldBeUndefined('derived.longMember'); | 274 shouldBeUndefined('derived.longMember'); |
| 275 shouldBe('derived.longMemberWithDefault', '42'); | 275 shouldBe('derived.longMemberWithDefault', '42'); |
| 276 shouldBeUndefined('derived.longOrNullMember'); | 276 shouldBeNull('derived.longOrNullMember'); |
| 277 shouldBeNull('derived.longOrNullMemberWithDefault'); | 277 shouldBeNull('derived.longOrNullMemberWithDefault'); |
| 278 shouldBeUndefined('derived.booleanMember'); | 278 shouldBeUndefined('derived.booleanMember'); |
| 279 shouldBeUndefined('derived.doubleMember'); | 279 shouldBeUndefined('derived.doubleMember'); |
| 280 shouldBeUndefined('derived.stringMember'); | 280 shouldBeUndefined('derived.stringMember'); |
| 281 shouldBeEqualToString('derived.stringMemberWithDefault', 'defaultStringValue
'); | 281 shouldBeEqualToString('derived.stringMemberWithDefault', 'defaultStringValue
'); |
| 282 shouldBeUndefined('derived.stringSequenceMember'); | 282 shouldBeUndefined('derived.stringSequenceMember'); |
| 283 shouldBe('derived.stringSequenceMemberWithDefault', '[]'); | 283 shouldBe('derived.stringSequenceMemberWithDefault', '[]'); |
| 284 shouldBeUndefined('derived.stringSequenceOrNullMember'); | 284 shouldBeNull('derived.stringSequenceOrNullMember'); |
| 285 shouldBeUndefined('derived.elementMember'); | 285 shouldBeUndefined('derived.elementMember'); |
| 286 shouldBeUndefined('derived.elementOrNullMember'); | 286 shouldBeNull('derived.elementOrNullMember'); |
| 287 shouldBeUndefined('derived.enumMember'); | 287 shouldBeUndefined('derived.enumMember'); |
| 288 shouldBeEqualToString('derived.enumMemberWithDefault', 'foo'); | 288 shouldBeEqualToString('derived.enumMemberWithDefault', 'foo'); |
| 289 shouldBeUndefined('derived.enumOrNullMember'); | 289 shouldBeNull('derived.enumOrNullMember'); |
| 290 shouldBeUndefined('derived.objectMember'); | 290 shouldBeUndefined('derived.objectMember'); |
| 291 shouldBeNull('derived.objectOrNullMemberWithDefault'); | 291 shouldBeNull('derived.objectOrNullMemberWithDefault'); |
| 292 shouldBeUndefined('derived.derivedStringMember'); | 292 shouldBeUndefined('derived.derivedStringMember'); |
| 293 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'derivedDefa
ultStringValue'); | 293 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'derivedDefa
ultStringValue'); |
| 294 shouldBeTrue('derived.requiredBooleanMember'); | 294 shouldBeTrue('derived.requiredBooleanMember'); |
| 295 debug(''); | 295 debug(''); |
| 296 | 296 |
| 297 dictionaryTest.setDerived({ | 297 dictionaryTest.setDerived({ |
| 298 longMember: 1, | 298 longMember: 1, |
| 299 stringMemberWithDefault: 'modifiedString', | 299 stringMemberWithDefault: 'modifiedString', |
| 300 derivedStringMember: 'modifiedString2', | 300 derivedStringMember: 'modifiedString2', |
| 301 derivedStringMemberWithDefault: 'modifiedString3', | 301 derivedStringMemberWithDefault: 'modifiedString3', |
| 302 invalidMember: 'shouldNotBeSet', | 302 invalidMember: 'shouldNotBeSet', |
| 303 requiredBooleanMember: false, | 303 requiredBooleanMember: false, |
| 304 }); | 304 }); |
| 305 derived = dictionaryTest.getDerived(); | 305 derived = dictionaryTest.getDerived(); |
| 306 shouldBe('derived.longMember', '1'); | 306 shouldBe('derived.longMember', '1'); |
| 307 shouldBeEqualToString('derived.stringMemberWithDefault', 'modifiedString'); | 307 shouldBeEqualToString('derived.stringMemberWithDefault', 'modifiedString'); |
| 308 shouldBeEqualToString('derived.derivedStringMember', 'modifiedString2'); | 308 shouldBeEqualToString('derived.derivedStringMember', 'modifiedString2'); |
| 309 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr
ing3'); | 309 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr
ing3'); |
| 310 shouldBeUndefined('derived.invalidMember'); | 310 shouldBeUndefined('derived.invalidMember'); |
| 311 shouldBeFalse('derived.requiredBooleanMember'); | 311 shouldBeFalse('derived.requiredBooleanMember'); |
| 312 debug(''); | 312 debug(''); |
| 313 | 313 |
| 314 debug('Test for passing invalid values as derived dictionary'); | 314 debug('Test for passing invalid values as derived dictionary'); |
| 315 shouldThrow("dictionaryTest.setDerived({objectMember: 42, requiredBooleanMem
ber: false })"); | 315 shouldThrow("dictionaryTest.setDerived({objectMember: 42, requiredBooleanMem
ber: false })"); |
| 316 shouldThrow("dictionaryTest.setDerived({})"); // Missing required member. | 316 shouldThrow("dictionaryTest.setDerived({})"); // Missing required member. |
| 317 } | 317 } |
| 318 </script> | 318 </script> |
| OLD | NEW |