1'use strict'; 2require('../common'); 3const assert = require('assert'); 4 5const dummyPort = new MessageChannel().port1; 6 7{ 8 for (const [ args, expected ] of [ 9 [ 10 ['message'], 11 { 12 type: 'message', data: null, origin: '', 13 lastEventId: '', source: null, ports: [] 14 }, 15 ], 16 [ 17 ['message', { data: undefined, origin: 'foo' }], 18 { 19 type: 'message', data: null, origin: 'foo', 20 lastEventId: '', source: null, ports: [] 21 }, 22 ], 23 [ 24 ['message', { data: 2, origin: 1, lastEventId: 0 }], 25 { 26 type: 'message', data: 2, origin: '1', 27 lastEventId: '0', source: null, ports: [] 28 }, 29 ], 30 [ 31 ['message', { lastEventId: 'foo' }], 32 { 33 type: 'message', data: null, origin: '', 34 lastEventId: 'foo', source: null, ports: [] 35 }, 36 ], 37 [ 38 ['messageerror', { lastEventId: 'foo', source: dummyPort }], 39 { 40 type: 'messageerror', data: null, origin: '', 41 lastEventId: 'foo', source: dummyPort, ports: [] 42 }, 43 ], 44 [ 45 ['message', { ports: [dummyPort], source: null }], 46 { 47 type: 'message', data: null, origin: '', 48 lastEventId: '', source: null, ports: [dummyPort] 49 }, 50 ], 51 ]) { 52 const ev = new MessageEvent(...args); 53 const { type, data, origin, lastEventId, source, ports } = ev; 54 assert.deepStrictEqual(expected, { 55 type, data, origin, lastEventId, source, ports 56 }); 57 } 58} 59 60{ 61 assert.throws(() => { 62 new MessageEvent('message', { source: 1 }); 63 }, { 64 code: 'ERR_INVALID_ARG_TYPE', 65 message: /The "init\.source" property must be an instance of MessagePort/, 66 }); 67 assert.throws(() => { 68 new MessageEvent('message', { source: {} }); 69 }, { 70 code: 'ERR_INVALID_ARG_TYPE', 71 message: /The "init\.source" property must be an instance of MessagePort/, 72 }); 73 assert.throws(() => { 74 new MessageEvent('message', { ports: 0 }); 75 }, { 76 message: /ports is not iterable/, 77 }); 78 assert.throws(() => { 79 new MessageEvent('message', { ports: [ null ] }); 80 }, { 81 code: 'ERR_INVALID_ARG_TYPE', 82 message: /The "init\.ports\[0\]" property must be an instance of MessagePort/, 83 }); 84 assert.throws(() => { 85 new MessageEvent('message', { ports: [ {} ] }); 86 }, { 87 code: 'ERR_INVALID_ARG_TYPE', 88 message: /The "init\.ports\[0\]" property must be an instance of MessagePort/, 89 }); 90} 91 92{ 93 assert(new MessageEvent('message') instanceof Event); 94} 95