| 'use strict'; |
| require('../common'); |
| const assert = require('assert'); |
| |
| const dummyPort = new MessageChannel().port1; |
| |
| { |
| for (const [ args, expected ] of [ |
| [ |
| ['message'], |
| { |
| type: 'message', data: null, origin: '', |
| lastEventId: '', source: null, ports: [] |
| }, |
| ], |
| [ |
| ['message', { data: undefined, origin: 'foo' }], |
| { |
| type: 'message', data: null, origin: 'foo', |
| lastEventId: '', source: null, ports: [] |
| }, |
| ], |
| [ |
| ['message', { data: 2, origin: 1, lastEventId: 0 }], |
| { |
| type: 'message', data: 2, origin: '1', |
| lastEventId: '0', source: null, ports: [] |
| }, |
| ], |
| [ |
| ['message', { lastEventId: 'foo' }], |
| { |
| type: 'message', data: null, origin: '', |
| lastEventId: 'foo', source: null, ports: [] |
| }, |
| ], |
| [ |
| ['messageerror', { lastEventId: 'foo', source: dummyPort }], |
| { |
| type: 'messageerror', data: null, origin: '', |
| lastEventId: 'foo', source: dummyPort, ports: [] |
| }, |
| ], |
| [ |
| ['message', { ports: [dummyPort], source: null }], |
| { |
| type: 'message', data: null, origin: '', |
| lastEventId: '', source: null, ports: [dummyPort] |
| }, |
| ], |
| ]) { |
| const ev = new MessageEvent(...args); |
| const { type, data, origin, lastEventId, source, ports } = ev; |
| assert.deepStrictEqual(expected, { |
| type, data, origin, lastEventId, source, ports |
| }); |
| } |
| } |
| |
| { |
| assert.throws(() => { |
| new MessageEvent('message', { source: 1 }); |
| }, { |
| code: 'ERR_INVALID_ARG_TYPE', |
| message: /The "init\.source" property must be an instance of MessagePort/, |
| }); |
| assert.throws(() => { |
| new MessageEvent('message', { source: {} }); |
| }, { |
| code: 'ERR_INVALID_ARG_TYPE', |
| message: /The "init\.source" property must be an instance of MessagePort/, |
| }); |
| assert.throws(() => { |
| new MessageEvent('message', { ports: 0 }); |
| }, { |
| message: /ports is not iterable/, |
| }); |
| assert.throws(() => { |
| new MessageEvent('message', { ports: [ null ] }); |
| }, { |
| code: 'ERR_INVALID_ARG_TYPE', |
| message: /The "init\.ports\[0\]" property must be an instance of MessagePort/, |
| }); |
| assert.throws(() => { |
| new MessageEvent('message', { ports: [ {} ] }); |
| }, { |
| code: 'ERR_INVALID_ARG_TYPE', |
| message: /The "init\.ports\[0\]" property must be an instance of MessagePort/, |
| }); |
| } |
| |
| { |
| assert(new MessageEvent('message') instanceof Event); |
| } |