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 shouldBeUndefined('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 shouldBeUndefined('dict.stringSequenceOrNullMember'); | 28 shouldBeUndefined('dict.stringSequenceOrNullMember'); |
28 shouldBeUndefined('dict.elementMember'); | 29 shouldBeUndefined('dict.elementMember'); |
29 shouldBeUndefined('dict.elementOrNullMember'); | 30 shouldBeUndefined('dict.elementOrNullMember'); |
30 shouldBeUndefined('dict.enumMember'); | 31 shouldBeUndefined('dict.enumMember'); |
31 shouldBeUndefined('dict.enumArrayMember'); | 32 shouldBeUndefined('dict.enumArrayMember'); |
32 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo'); | 33 shouldBeEqualToString('dict.enumMemberWithDefault', 'foo'); |
33 shouldBeUndefined('dict.enumOrNullMember'); | 34 shouldBeUndefined('dict.enumOrNullMember'); |
34 shouldBeUndefined('dict.objectMember'); | 35 shouldBeUndefined('dict.objectMember'); |
35 shouldBeNull('dict.objectOrNullMemberWithDefault'); | 36 shouldBeNull('dict.objectOrNullMemberWithDefault'); |
36 shouldBeUndefined('dict.doubleOrStringMember'); | 37 shouldBeUndefined('dict.doubleOrStringMember'); |
37 shouldBeNull('dict.eventTargetOrNullMember'); | 38 shouldBeNull('dict.eventTargetOrNullMember'); |
38 debug(''); | 39 debug(''); |
39 | 40 |
40 debug('Test for setting undefined'); | 41 debug('Test for setting undefined'); |
41 dictionaryTest.set(undefined); | 42 dictionaryTest.set(undefined); |
42 dict = dictionaryTest.get(); | 43 dict = dictionaryTest.get(); |
43 shouldBeUndefined('dict.longMember'); | 44 shouldBeUndefined('dict.longMember'); |
44 shouldBe('dict.longMemberWithDefault', '42'); | 45 shouldBe('dict.longMemberWithDefault', '42'); |
45 shouldBeUndefined('dict.longOrNullMember'); | 46 shouldBeUndefined('dict.longOrNullMember'); |
46 shouldBeNull('dict.longOrNullMemberWithDefault'); | 47 shouldBeNull('dict.longOrNullMemberWithDefault'); |
47 shouldBeUndefined('dict.booleanMember'); | 48 shouldBeUndefined('dict.booleanMember'); |
48 shouldBeUndefined('dict.doubleMember'); | 49 shouldBeUndefined('dict.doubleMember'); |
49 shouldBeUndefined('dict.unrestrictedDoubleMember'); | 50 shouldBeUndefined('dict.unrestrictedDoubleMember'); |
50 shouldBeUndefined('dict.stringMember'); | 51 shouldBeUndefined('dict.stringMember'); |
51 shouldBeUndefined('dict.byteStringMember'); | 52 shouldBeUndefined('dict.byteStringMember'); |
52 shouldBeUndefined('dict.usvStringMember'); | 53 shouldBeUndefined('dict.usvStringMember'); |
53 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); | 54 shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue'); |
54 shouldBeUndefined('dict.stringSequenceMember'); | 55 shouldBeUndefined('dict.stringSequenceMember'); |
| 56 shouldBe('dict.stringSequenceMemberWithDefault', '[]'); |
55 shouldBeUndefined('dict.stringSequenceOrNullMember'); | 57 shouldBeUndefined('dict.stringSequenceOrNullMember'); |
56 shouldBeUndefined('dict.elementMember'); | 58 shouldBeUndefined('dict.elementMember'); |
57 shouldBeUndefined('dict.elementOrNullMember'); | 59 shouldBeUndefined('dict.elementOrNullMember'); |
58 shouldBeUndefined('dict.objectMember'); | 60 shouldBeUndefined('dict.objectMember'); |
59 shouldBeNull('dict.objectOrNullMemberWithDefault'); | 61 shouldBeNull('dict.objectOrNullMemberWithDefault'); |
60 shouldBeNull('dict.eventTargetOrNullMember'); | 62 shouldBeNull('dict.eventTargetOrNullMember'); |
61 debug(''); | 63 debug(''); |
62 | 64 |
63 var element1 = document.createElement('div'); | 65 var element1 = document.createElement('div'); |
64 | 66 |
65 debug('Test for setting valid values'); | 67 debug('Test for setting valid values'); |
66 dictionaryTest.set({ | 68 dictionaryTest.set({ |
67 longMember: 1, | 69 longMember: 1, |
68 longMemberWithDefault: 2, | 70 longMemberWithDefault: 2, |
69 longOrNullMember: 3, | 71 longOrNullMember: 3, |
70 longOrNullMemberWithDefault: 4, | 72 longOrNullMemberWithDefault: 4, |
71 stringMember: 'modifiedString1', | 73 stringMember: 'modifiedString1', |
72 stringMemberWithDefault: 'modifiedString2', | 74 stringMemberWithDefault: 'modifiedString2', |
73 byteStringMember: '\x00\x01\xFE\xFF', | 75 byteStringMember: '\x00\x01\xFE\xFF', |
74 usvStringMember: '!@#123ABCabc\xA0\uD800\uDC00', | 76 usvStringMember: '!@#123ABCabc\xA0\uD800\uDC00', |
75 booleanMember: true, | 77 booleanMember: true, |
76 doubleMember: 3.14, | 78 doubleMember: 3.14, |
77 unrestrictedDoubleMember: NaN, | 79 unrestrictedDoubleMember: NaN, |
78 stringSequenceMember: ['foo', 'bar', 'baz'], | 80 stringSequenceMember: ['foo', 'bar', 'baz'], |
| 81 stringSequenceMemberWithDefault: ['foo', 'bar', 'baz'], |
79 stringSequenceOrNullMember: [], | 82 stringSequenceOrNullMember: [], |
80 elementMember: element1, | 83 elementMember: element1, |
81 elementOrNullMember: null, | 84 elementOrNullMember: null, |
82 enumMember: 'foo', | 85 enumMember: 'foo', |
83 enumMemberWithDefault: 'bar', | 86 enumMemberWithDefault: 'bar', |
84 enumOrNullMember: 'baz', | 87 enumOrNullMember: 'baz', |
85 enumArrayMember: ['foo', 'bar', 'baz'], | 88 enumArrayMember: ['foo', 'bar', 'baz'], |
86 objectMember: testObject1, | 89 objectMember: testObject1, |
87 objectOrNullMemberWithDefault: testObject2, | 90 objectOrNullMemberWithDefault: testObject2, |
88 doubleOrStringMember: 3.14, | 91 doubleOrStringMember: 3.14, |
89 eventTargetOrNullMember: element1 | 92 eventTargetOrNullMember: element1 |
90 }); | 93 }); |
91 dict = dictionaryTest.get(); | 94 dict = dictionaryTest.get(); |
92 shouldBe('dict.longMember', '1'); | 95 shouldBe('dict.longMember', '1'); |
93 shouldBe('dict.longMemberWithDefault', '2'); | 96 shouldBe('dict.longMemberWithDefault', '2'); |
94 shouldBe('dict.longOrNullMember', '3'); | 97 shouldBe('dict.longOrNullMember', '3'); |
95 shouldBe('dict.longOrNullMemberWithDefault', '4'); | 98 shouldBe('dict.longOrNullMemberWithDefault', '4'); |
96 shouldBeEqualToString('dict.stringMember', 'modifiedString1'); | 99 shouldBeEqualToString('dict.stringMember', 'modifiedString1'); |
97 shouldBeEqualToString('dict.stringMemberWithDefault', 'modifiedString2'); | 100 shouldBeEqualToString('dict.stringMemberWithDefault', 'modifiedString2'); |
98 shouldBeEqualToString('dict.byteStringMember', '\x00\x01\xFE\xFF'); | 101 shouldBeEqualToString('dict.byteStringMember', '\x00\x01\xFE\xFF'); |
99 shouldBeEqualToString('dict.usvStringMember', '!@#123ABCabc\xA0\uD800\uDC00'
); | 102 shouldBeEqualToString('dict.usvStringMember', '!@#123ABCabc\xA0\uD800\uDC00'
); |
100 shouldBeTrue('dict.booleanMember'); | 103 shouldBeTrue('dict.booleanMember'); |
101 shouldBe('dict.doubleMember', '3.14'); | 104 shouldBe('dict.doubleMember', '3.14'); |
102 shouldBe('dict.unrestrictedDoubleMember', 'NaN'); | 105 shouldBe('dict.unrestrictedDoubleMember', 'NaN'); |
103 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]'); | 106 shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]'); |
| 107 shouldBe('dict.stringSequenceMemberWithDefault', '["foo", "bar", "baz"]'); |
104 shouldBe('dict.stringSequenceOrNullMember', '[]'); | 108 shouldBe('dict.stringSequenceOrNullMember', '[]'); |
105 shouldBe('dict.elementMember', 'element1'); | 109 shouldBe('dict.elementMember', 'element1'); |
106 // This will be undefined as the spec says | 110 // This will be undefined as the spec says |
107 shouldBeUndefined('dict.elementOrNullMember'); | 111 shouldBeUndefined('dict.elementOrNullMember'); |
108 shouldBeEqualToString('dict.enumMember', 'foo'); | 112 shouldBeEqualToString('dict.enumMember', 'foo'); |
109 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar'); | 113 shouldBeEqualToString('dict.enumMemberWithDefault', 'bar'); |
110 shouldBeEqualToString('dict.enumOrNullMember', 'baz'); | 114 shouldBeEqualToString('dict.enumOrNullMember', 'baz'); |
111 shouldBe('dict.enumArrayMember', '["foo", "bar", "baz"]'); | 115 shouldBe('dict.enumArrayMember', '["foo", "bar", "baz"]'); |
112 shouldBe('dict.objectMember', 'testObject1'); | 116 shouldBe('dict.objectMember', 'testObject1'); |
113 shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2'); | 117 shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2'); |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 derived = dictionaryTest.getDerived(); | 255 derived = dictionaryTest.getDerived(); |
252 shouldBeUndefined('derived.longMember'); | 256 shouldBeUndefined('derived.longMember'); |
253 shouldBe('derived.longMemberWithDefault', '42'); | 257 shouldBe('derived.longMemberWithDefault', '42'); |
254 shouldBeUndefined('derived.longOrNullMember'); | 258 shouldBeUndefined('derived.longOrNullMember'); |
255 shouldBeNull('derived.longOrNullMemberWithDefault'); | 259 shouldBeNull('derived.longOrNullMemberWithDefault'); |
256 shouldBeUndefined('derived.booleanMember'); | 260 shouldBeUndefined('derived.booleanMember'); |
257 shouldBeUndefined('derived.doubleMember'); | 261 shouldBeUndefined('derived.doubleMember'); |
258 shouldBeUndefined('derived.stringMember'); | 262 shouldBeUndefined('derived.stringMember'); |
259 shouldBeEqualToString('derived.stringMemberWithDefault', 'defaultStringValue
'); | 263 shouldBeEqualToString('derived.stringMemberWithDefault', 'defaultStringValue
'); |
260 shouldBeUndefined('derived.stringSequenceMember'); | 264 shouldBeUndefined('derived.stringSequenceMember'); |
| 265 shouldBe('derived.stringSequenceMemberWithDefault', '[]'); |
261 shouldBeUndefined('derived.stringSequenceOrNullMember'); | 266 shouldBeUndefined('derived.stringSequenceOrNullMember'); |
262 shouldBeUndefined('derived.elementMember'); | 267 shouldBeUndefined('derived.elementMember'); |
263 shouldBeUndefined('derived.elementOrNullMember'); | 268 shouldBeUndefined('derived.elementOrNullMember'); |
264 shouldBeUndefined('derived.enumMember'); | 269 shouldBeUndefined('derived.enumMember'); |
265 shouldBeEqualToString('derived.enumMemberWithDefault', 'foo'); | 270 shouldBeEqualToString('derived.enumMemberWithDefault', 'foo'); |
266 shouldBeUndefined('derived.enumOrNullMember'); | 271 shouldBeUndefined('derived.enumOrNullMember'); |
267 shouldBeUndefined('derived.objectMember'); | 272 shouldBeUndefined('derived.objectMember'); |
268 shouldBeNull('derived.objectOrNullMemberWithDefault'); | 273 shouldBeNull('derived.objectOrNullMemberWithDefault'); |
269 shouldBeUndefined('derived.derivedStringMember'); | 274 shouldBeUndefined('derived.derivedStringMember'); |
270 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'derivedDefa
ultStringValue'); | 275 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'derivedDefa
ultStringValue'); |
(...skipping 15 matching lines...) Expand all Loading... |
286 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr
ing3'); | 291 shouldBeEqualToString('derived.derivedStringMemberWithDefault', 'modifiedStr
ing3'); |
287 shouldBeUndefined('derived.invalidMember'); | 292 shouldBeUndefined('derived.invalidMember'); |
288 shouldBeFalse('derived.requiredBooleanMember'); | 293 shouldBeFalse('derived.requiredBooleanMember'); |
289 debug(''); | 294 debug(''); |
290 | 295 |
291 debug('Test for passing invalid values as derived dictionary'); | 296 debug('Test for passing invalid values as derived dictionary'); |
292 shouldThrow("dictionaryTest.setDerived({objectMember: 42, requiredBooleanMem
ber: false })"); | 297 shouldThrow("dictionaryTest.setDerived({objectMember: 42, requiredBooleanMem
ber: false })"); |
293 shouldThrow("dictionaryTest.setDerived({})"); // Missing required member. | 298 shouldThrow("dictionaryTest.setDerived({})"); // Missing required member. |
294 } | 299 } |
295 </script> | 300 </script> |
OLD | NEW |