This tests the constructor for the CompositionEvent DOM class.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS new CompositionEvent('eventType').bubbles is false
PASS new CompositionEvent('eventType').cancelable is false
PASS new CompositionEvent('eventType').view is null
PASS new CompositionEvent('eventType').detail is 0
PASS new CompositionEvent('eventType').data is ""
PASS new CompositionEvent('eventType', { bubbles: false }).bubbles is false
PASS new CompositionEvent('eventType', { bubbles: true }).bubbles is true
PASS new CompositionEvent('eventType', { cancelable: false }).cancelable is false
PASS new CompositionEvent('eventType', { cancelable: true }).cancelable is true
PASS new CompositionEvent('eventType', { view: window }).view is window
PASS new CompositionEvent('eventType', { view: this }).view is this
PASS new CompositionEvent('eventType', { view: testObject }).view is null
PASS new CompositionEvent('eventType', { view: document }).view is null
PASS new CompositionEvent('eventType', { view: undefined }).view is null
PASS new CompositionEvent('eventType', { view: null }).view is null
PASS new CompositionEvent('eventType', { view: false }).view is null
PASS new CompositionEvent('eventType', { view: true }).view is null
PASS new CompositionEvent('eventType', { view: '' }).view is null
PASS new CompositionEvent('eventType', { view: 'chocolate' }).view is null
PASS new CompositionEvent('eventType', { view: 12345 }).view is null
PASS new CompositionEvent('eventType', { view: 18446744073709551615 }).view is null
PASS new CompositionEvent('eventType', { view: NaN }).view is null
PASS new CompositionEvent('eventType', { view: {valueOf: function () { return window; } } }).view == window is false
PASS new CompositionEvent('eventType', { get view() { return 123; } }).view is null
PASS new CompositionEvent('eventType', { get view() { throw 'CompositionEvent Error'; } }) threw exception CompositionEvent Error.
PASS new CompositionEvent('eventType', { data: 'koakuma' }).data is "koakuma"
PASS new CompositionEvent('eventType', { data: '' }).data is ""
PASS new CompositionEvent('eventType', { data: undefined }).data is "undefined"
PASS new CompositionEvent('eventType', { data: null }).data is "null"
PASS new CompositionEvent('eventType', { data: false }).data is "false"
PASS new CompositionEvent('eventType', { data: true }).data is "true"
PASS new CompositionEvent('eventType', { data: 12345 }).data is "12345"
PASS new CompositionEvent('eventType', { data: 18446744073709551615 }).data is "18446744073709552000"
PASS new CompositionEvent('eventType', { data: NaN }).data is "NaN"
PASS new CompositionEvent('eventType', { data: [] }).data is ""
PASS new CompositionEvent('eventType', { data: [1, 2, 3] }).data is "1,2,3"
PASS new CompositionEvent('eventType', { data: {koakuma: 12345} }).data is "[object Object]"
PASS new CompositionEvent('eventType', { data: {valueOf: function () { return 'koakuma'; } } }).data is "[object Object]"
PASS new CompositionEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, data: 'koakuma' }).bubbles is true
PASS new CompositionEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, data: 'koakuma' }).cancelable is true
PASS new CompositionEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, data: 'koakuma' }).view is window
PASS new CompositionEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, data: 'koakuma' }).detail is 111
PASS new CompositionEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, data: 'koakuma' }).data is "koakuma"
PASS successfullyParsed is true

TEST COMPLETE

