OLD | NEW |
---|---|
(Empty) | |
1 <!DOCTYPE html> | |
2 <html> | |
3 <head> | |
4 <script src="../../../resources/js-test.js"></script> | |
falken
2015/05/18 03:40:23
Kind of unfortunate that this won't be upstreamed.
| |
5 </head> | |
6 <body> | |
7 <script> | |
8 | |
9 description("This tests the constructor for the ServiceWorkerMessageEvent DOM cl ass."); | |
10 | |
11 var test_object = {nyannyan: 123}; | |
12 | |
13 // No initializer is passed. | |
14 shouldBe("new ServiceWorkerMessageEvent('eventType').bubbles", "false"); | |
15 shouldBe("new ServiceWorkerMessageEvent('eventType').cancelable", "false"); | |
16 shouldBe("new ServiceWorkerMessageEvent('eventType').data", "null"); | |
17 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType').origin", ""); | |
18 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType').lastEventId", ""); | |
19 shouldBe("new ServiceWorkerMessageEvent('eventType').source", "null"); | |
20 shouldBe("new ServiceWorkerMessageEvent('eventType').ports", "[]"); | |
21 | |
22 // bubbles is passed. | |
23 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: false }).bubbles ", "false"); | |
24 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: true }).bubbles" , "true"); | |
25 | |
26 // cancelable is passed. | |
27 shouldBe("new ServiceWorkerMessageEvent('eventType', { cancelable: false }).canc elable", "false"); | |
28 shouldBe("new ServiceWorkerMessageEvent('eventType', { cancelable: true }).cance lable", "true"); | |
29 | |
30 // data is passed. | |
31 shouldBe("new ServiceWorkerMessageEvent('eventType', { data: test_object }).data ", "test_object"); | |
32 shouldBe("new ServiceWorkerMessageEvent('eventType', { data: document }).data", "document"); | |
33 shouldBe("new ServiceWorkerMessageEvent('eventType', { data: undefined }).data", "undefined"); | |
34 shouldBe("new ServiceWorkerMessageEvent('eventType', { data: null }).data", "nul l"); | |
35 shouldBe("new ServiceWorkerMessageEvent('eventType', { data: false }).data", "fa lse"); | |
36 shouldBe("new ServiceWorkerMessageEvent('eventType', { data: true }).data", "tru e"); | |
37 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { data: '' }). data", ""); | |
38 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { data: 'choco late' }).data", "chocolate"); | |
39 shouldBe("new ServiceWorkerMessageEvent('eventType', { data: 12345 }).data", "12 345"); | |
40 shouldBe("new ServiceWorkerMessageEvent('eventType', { data: 1844674407370955161 5 }).data", "18446744073709552000"); | |
41 shouldBe("new ServiceWorkerMessageEvent('eventType', { data: NaN }).data", "NaN" ); | |
42 // Note that valueOf() is not called, when the left hand side is evaluated. | |
43 shouldBeFalse("new ServiceWorkerMessageEvent('eventType', { data: {valueOf: func tion () { return test_object; } } }).data == test_object"); | |
44 shouldBe("new ServiceWorkerMessageEvent('eventType', { get data() { return 123; } }).data", "123"); | |
45 shouldThrow("new ServiceWorkerMessageEvent('eventType', { get data() { throw 'Se rviceWorkerMessageEvent Error'; } })"); | |
46 | |
47 // origin or lastEventId is passed. | |
48 ["origin", "lastEventId"].forEach(function (attr) { | |
49 // Strings. | |
50 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": 'melancholy' })." + attr, "melancholy"); | |
51 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": '' })." + attr, ""); | |
52 | |
53 // Non-strings. | |
54 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": undefined })." + attr, "undefined"); | |
55 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": null })." + attr, "null"); | |
56 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": false })." + attr, "false"); | |
57 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": true })." + attr, "true"); | |
58 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": 12345 })." + attr, "12345"); | |
59 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": 18446744073709551615 })." + attr, "18446744073709552000"); | |
60 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": NaN })." + attr, "NaN"); | |
61 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": [] })." + attr, ""); | |
62 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": [1, 2, 3] })." + attr, "1,2,3"); | |
63 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": {melancholy: 12345} })." + attr, "[object Object]"); | |
64 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { " + attr + ": {valueOf: function () { return 'melancholy'; } } })." + attr, "[object Obj ect]"); | |
65 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { get " + attr + "() { return 123; } })." + attr, "123"); | |
66 shouldThrow("new ServiceWorkerMessageEvent('eventType', { get " + attr + "() { throw 'ServiceWorkerMessageEvent Error'; } })"); | |
67 }); | |
68 | |
69 // source is passed. | |
70 // FIXME: ServiceWorker object could not be created without http server. | |
falken
2015/05/18 03:40:22
Why not just test this separately in an http test?
xiang
2015/05/25 02:04:25
Done. Please check the serviceworker-message-event
| |
71 | |
72 // MessagePort objects. | |
73 var channel = new MessageChannel(); | |
74 shouldBe("new ServiceWorkerMessageEvent('eventType', { ports: [channel.port1], s ource: channel.port1 }).source", "channel.port1"); | |
75 | |
76 // Unacceptable source objects (not a ServiceWorker or a MessagePort). | |
77 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: window }).sour ce"); | |
78 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: this }).source "); | |
79 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: test_object }) .source"); | |
80 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: document }).so urce"); | |
81 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: document.body }).source"); | |
82 shouldBe("new ServiceWorkerMessageEvent('eventType', { source: undefined }).sour ce", "null"); | |
83 shouldBe("new ServiceWorkerMessageEvent('eventType', { source: null }).source", "null"); | |
84 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: false }).sourc e"); | |
85 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: true }).source "); | |
86 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: '' }).source") ; | |
87 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: 'chocolate' }) .source"); | |
88 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: 12345 }).sourc e"); | |
89 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: 18446744073709 551615 }).source"); | |
90 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: NaN }).source" ); | |
91 // Note that valueOf() is not called, when the left hand side is evaluated. | |
92 shouldThrow("new ServiceWorkerMessageEvent('eventType', { source: {valueOf: func tion () { return window; } } }).source == window"); | |
93 shouldBe("new ServiceWorkerMessageEvent('eventType', { get source() { return cha nnel.port1; } }).source", "channel.port1"); | |
94 shouldThrow("new ServiceWorkerMessageEvent('eventType', { get source() { return 123; } }).source"); | |
95 shouldThrow("new ServiceWorkerMessageEvent('eventType', { get source() { throw ' ServiceWorkerMessageEvent Error'; } })"); | |
96 | |
97 // ports is passed. | |
98 // Valid message ports. | |
99 var channel2 = new MessageChannel(); | |
100 shouldBe("new ServiceWorkerMessageEvent('eventType', { ports: [channel.port1, ch annel.port2, channel2.port1] }).ports[0]", "channel.port1"); | |
101 shouldBe("new ServiceWorkerMessageEvent('eventType', { ports: [channel.port1, ch annel.port2, channel2.port1] }).ports[1]", "channel.port2"); | |
102 shouldBe("new ServiceWorkerMessageEvent('eventType', { ports: [channel.port1, ch annel.port2, channel2.port1] }).ports[2]", "channel2.port1"); | |
103 shouldBe("new ServiceWorkerMessageEvent('eventType', { ports: [] }).ports", "[]" ); | |
104 shouldBe("new ServiceWorkerMessageEvent('eventType', { ports: undefined }).ports ", "[]"); | |
105 shouldBe("new ServiceWorkerMessageEvent('eventType', { ports: null }).ports", "[ ]"); | |
106 | |
107 // Invalid message ports. | |
108 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: [1, 2, 3] }).po rts[2]"); | |
109 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: test_object }). ports"); | |
110 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: document }).por ts"); | |
111 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: false }).ports" ); | |
112 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: true }).ports") ; | |
113 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: '' }).ports"); | |
114 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: 'chocolate' }). ports"); | |
115 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: 12345 }).ports" ); | |
116 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: 184467440737095 51615 }).ports"); | |
117 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: NaN }).ports"); | |
118 shouldThrow("new ServiceWorkerMessageEvent('eventType', { get ports() { return 1 23; } }).ports"); | |
119 shouldThrow("new ServiceWorkerMessageEvent('eventType', { get ports() { throw 'S erviceWorkerMessageEvent Error'; } })"); | |
120 // Note that valueOf() is not called, when the left hand side is evaluated. | |
121 shouldThrow("new ServiceWorkerMessageEvent('eventType', { ports: {valueOf: funct ion () { return [channel.port1, channel.port2, channel.port2]; } } }).ports[0]") ; | |
122 | |
123 // All initializers are passed. | |
124 | |
125 var port = new MessageChannel().port1; | |
126 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: true, cancelable : true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source : port, ports: [channel.port1, channel.port2, channel2.port1] }).bubbles", "true "); | |
127 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: true, cancelable : true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source : port, ports: [channel.port1, channel.port2, channel2.port1] }).cancelable", "t rue"); | |
128 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: true, cancelable : true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source : port, ports: [channel.port1, channel.port2, channel2.port1] }).data", "test_ob ject"); | |
129 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { bubbles: tru e, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excel lent', source: port, ports: [channel.port1, channel.port2, channel2.port1] }).or igin", "wonderful"); | |
130 shouldBeEqualToString("new ServiceWorkerMessageEvent('eventType', { bubbles: tru e, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excel lent', source: port, ports: [channel.port1, channel.port2, channel2.port1] }).la stEventId", "excellent"); | |
131 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: true, cancelable : true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source : port, ports: [channel.port1, channel.port2, channel2.port1] }).source", "port" ); | |
132 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: true, cancelable : true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source : port, ports: [channel.port1, channel.port2, channel2.port1] }).ports[0]", "cha nnel.port1"); | |
133 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: true, cancelable : true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source : port, ports: [channel.port1, channel.port2, channel2.port1] }).ports[1]", "cha nnel.port2"); | |
134 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: true, cancelable : true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source : port, ports: [channel.port1, channel.port2, channel2.port1] }).ports[2]", "cha nnel2.port1"); | |
135 shouldBe("new ServiceWorkerMessageEvent('eventType', { bubbles: true, cancelable : true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source : port, ports: {length: 3, 0: channel.port1, 1: channel.port2, 2: channel2.port1 } }).ports[2]", "channel2.port1"); | |
136 | |
137 </script> | |
138 </body> | |
139 </html> | |
OLD | NEW |