| 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' }; |
| 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> |
| OLD | NEW |