Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / fast / dom / idl-dictionary-unittest.html
1 <!DOCTYPE html>
2 <script src="../../resources/js-test.js"></script>
3 <script>
4 description('IDL dictionary unittest');
5
6 var testObject1 = { foo: 'x' };
7 var testObject2 = { bar: 'y' };
8
9 if (window.internals && internals.dictionaryTest) {
10     var dictionaryTest = window.internals.dictionaryTest();
11
12     debug('Test for setting an empty dictionary');
13     dictionaryTest.set({});
14     dict = dictionaryTest.get();
15     shouldBeUndefined('dict.longMember');
16     shouldBe('dict.longMemberWithDefault', '42');
17     shouldBeUndefined('dict.longOrNullMember');
18     shouldBeNull('dict.longOrNullMemberWithDefault');
19     shouldBeUndefined('dict.booleanMember');
20     shouldBeUndefined('dict.doubleMember');
21     shouldBeUndefined('dict.stringMember');
22     shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue');
23     shouldBeUndefined('dict.stringSequenceMember');
24     shouldBeUndefined('dict.stringSequenceOrNullMember');
25     shouldBeUndefined('dict.elementMember');
26     shouldBeUndefined('dict.elementOrNullMember');
27     shouldBeUndefined('dict.enumMember');
28     shouldBeEqualToString('dict.enumMemberWithDefault', 'foo');
29     shouldBeUndefined('dict.enumOrNullMember');
30     shouldBeUndefined('dict.objectMember');
31     shouldBeNull('dict.objectOrNullMemberWithDefault');
32     debug('');
33
34     debug('Test for setting undefined');
35     dictionaryTest.set(undefined);
36     dict = dictionaryTest.get();
37     shouldBeUndefined('dict.longMember');
38     shouldBe('dict.longMemberWithDefault', '42');
39     shouldBeUndefined('dict.longOrNullMember');
40     shouldBeNull('dict.longOrNullMemberWithDefault');
41     shouldBeUndefined('dict.booleanMember');
42     shouldBeUndefined('dict.doubleMember');
43     shouldBeUndefined('dict.stringMember');
44     shouldBeEqualToString('dict.stringMemberWithDefault', 'defaultStringValue');
45     shouldBeUndefined('dict.stringSequenceMember');
46     shouldBeUndefined('dict.stringSequenceOrNullMember');
47     shouldBeUndefined('dict.elementMember');
48     shouldBeUndefined('dict.elementOrNullMember');
49     shouldBeUndefined('dict.objectMember');
50     shouldBeNull('dict.objectOrNullMemberWithDefault');
51     debug('');
52
53     var element1 = document.createElement('div');
54
55     debug('Test for setting valid values');
56     dictionaryTest.set({
57         longMember: 1,
58         longMemberWithDefault: 2,
59         longOrNullMember: 3,
60         longOrNullMemberWithDefault: 4,
61         stringMember: 'modifiedString1',
62         stringMemberWithDefault: 'modifiedString2',
63         booleanMember: true,
64         doubleMember: 3.14,
65         stringSequenceMember: ['foo', 'bar', 'baz'],
66         stringSequenceOrNullMember: [],
67         elementMember: element1,
68         elementOrNullMember: null,
69         enumMember: 'foo',
70         enumMemberWithDefault: 'bar',
71         enumOrNullMember: 'baz',
72         objectMember: testObject1,
73         objectOrNullMemberWithDefault: testObject2,
74     });
75     dict = dictionaryTest.get();
76     shouldBe('dict.longMember', '1');
77     shouldBe('dict.longMemberWithDefault', '2');
78     shouldBe('dict.longOrNullMember', '3');
79     shouldBe('dict.longOrNullMemberWithDefault', '4');
80     shouldBeEqualToString('dict.stringMember', 'modifiedString1');
81     shouldBeEqualToString('dict.stringMemberWithDefault', 'modifiedString2');
82     shouldBeTrue('dict.booleanMember');
83     shouldBe('dict.doubleMember', '3.14');
84     shouldBe('dict.stringSequenceMember', '["foo", "bar", "baz"]');
85     shouldBe('dict.stringSequenceOrNullMember', '[]');
86     shouldBe('dict.elementMember', 'element1');
87     // This will be undefined as the spec says
88     shouldBeUndefined('dict.elementOrNullMember');
89     shouldBeEqualToString('dict.enumMember', 'foo');
90     shouldBeEqualToString('dict.enumMemberWithDefault', 'bar');
91     shouldBeEqualToString('dict.enumOrNullMember', 'baz');
92     shouldBe('dict.objectMember', 'testObject1');
93     shouldBe('dict.objectOrNullMemberWithDefault', 'testObject2');
94     debug('');
95
96     debug('Test for explicit undefined or null, and missing members');
97     dictionaryTest.set({
98         longMember: undefined,
99         longMemberWithDefault: null,
100         longOrNullMember: undefined,
101         longOrNullMemberWithDefault: null,
102     });
103     dict = dictionaryTest.get();
104     shouldBeUndefined('dict.longMember');
105     shouldBe('dict.longMemberWithDefault', '42');
106     shouldBeUndefined('dict.longOrNullMember');
107     // Nullable and its default value is null
108     shouldBeNull('dict.longOrNullMemberWithDefault');
109     debug('');
110
111     debug('Test for setting invalid member');
112     dictionaryTest.set({invalidMember: 'shouldNotBeSet'});
113     dict = dictionaryTest.get();
114     shouldBeUndefined('dict.invalidMember');
115     debug('');
116
117     debug('Test for setting invalid enum value');
118     shouldThrow("dictionaryTest.set({enumMember: 'invalid'})");
119     debug('');
120
121     debug('Test for setting invalid object value');
122     shouldThrow("dictionaryTest.set({objectMember: 42})");
123     shouldThrow("dictionaryTest.set({objectMember: 'invalid'})");
124     debug('');
125
126     debug('Test for passing invalid dictionary values');
127     shouldThrow("dictionaryTest.set(42)");
128     shouldThrow("dictionaryTest.set('string')");
129     debug('');
130 }
131 </script>