11cb0ef41Sopenharmony_ci'use strict'; 21cb0ef41Sopenharmony_cirequire('../common'); 31cb0ef41Sopenharmony_ciconst assert = require('assert'); 41cb0ef41Sopenharmony_ci 51cb0ef41Sopenharmony_ciconst dummyPort = new MessageChannel().port1; 61cb0ef41Sopenharmony_ci 71cb0ef41Sopenharmony_ci{ 81cb0ef41Sopenharmony_ci for (const [ args, expected ] of [ 91cb0ef41Sopenharmony_ci [ 101cb0ef41Sopenharmony_ci ['message'], 111cb0ef41Sopenharmony_ci { 121cb0ef41Sopenharmony_ci type: 'message', data: null, origin: '', 131cb0ef41Sopenharmony_ci lastEventId: '', source: null, ports: [] 141cb0ef41Sopenharmony_ci }, 151cb0ef41Sopenharmony_ci ], 161cb0ef41Sopenharmony_ci [ 171cb0ef41Sopenharmony_ci ['message', { data: undefined, origin: 'foo' }], 181cb0ef41Sopenharmony_ci { 191cb0ef41Sopenharmony_ci type: 'message', data: null, origin: 'foo', 201cb0ef41Sopenharmony_ci lastEventId: '', source: null, ports: [] 211cb0ef41Sopenharmony_ci }, 221cb0ef41Sopenharmony_ci ], 231cb0ef41Sopenharmony_ci [ 241cb0ef41Sopenharmony_ci ['message', { data: 2, origin: 1, lastEventId: 0 }], 251cb0ef41Sopenharmony_ci { 261cb0ef41Sopenharmony_ci type: 'message', data: 2, origin: '1', 271cb0ef41Sopenharmony_ci lastEventId: '0', source: null, ports: [] 281cb0ef41Sopenharmony_ci }, 291cb0ef41Sopenharmony_ci ], 301cb0ef41Sopenharmony_ci [ 311cb0ef41Sopenharmony_ci ['message', { lastEventId: 'foo' }], 321cb0ef41Sopenharmony_ci { 331cb0ef41Sopenharmony_ci type: 'message', data: null, origin: '', 341cb0ef41Sopenharmony_ci lastEventId: 'foo', source: null, ports: [] 351cb0ef41Sopenharmony_ci }, 361cb0ef41Sopenharmony_ci ], 371cb0ef41Sopenharmony_ci [ 381cb0ef41Sopenharmony_ci ['messageerror', { lastEventId: 'foo', source: dummyPort }], 391cb0ef41Sopenharmony_ci { 401cb0ef41Sopenharmony_ci type: 'messageerror', data: null, origin: '', 411cb0ef41Sopenharmony_ci lastEventId: 'foo', source: dummyPort, ports: [] 421cb0ef41Sopenharmony_ci }, 431cb0ef41Sopenharmony_ci ], 441cb0ef41Sopenharmony_ci [ 451cb0ef41Sopenharmony_ci ['message', { ports: [dummyPort], source: null }], 461cb0ef41Sopenharmony_ci { 471cb0ef41Sopenharmony_ci type: 'message', data: null, origin: '', 481cb0ef41Sopenharmony_ci lastEventId: '', source: null, ports: [dummyPort] 491cb0ef41Sopenharmony_ci }, 501cb0ef41Sopenharmony_ci ], 511cb0ef41Sopenharmony_ci ]) { 521cb0ef41Sopenharmony_ci const ev = new MessageEvent(...args); 531cb0ef41Sopenharmony_ci const { type, data, origin, lastEventId, source, ports } = ev; 541cb0ef41Sopenharmony_ci assert.deepStrictEqual(expected, { 551cb0ef41Sopenharmony_ci type, data, origin, lastEventId, source, ports 561cb0ef41Sopenharmony_ci }); 571cb0ef41Sopenharmony_ci } 581cb0ef41Sopenharmony_ci} 591cb0ef41Sopenharmony_ci 601cb0ef41Sopenharmony_ci{ 611cb0ef41Sopenharmony_ci assert.throws(() => { 621cb0ef41Sopenharmony_ci new MessageEvent('message', { source: 1 }); 631cb0ef41Sopenharmony_ci }, { 641cb0ef41Sopenharmony_ci code: 'ERR_INVALID_ARG_TYPE', 651cb0ef41Sopenharmony_ci message: /The "init\.source" property must be an instance of MessagePort/, 661cb0ef41Sopenharmony_ci }); 671cb0ef41Sopenharmony_ci assert.throws(() => { 681cb0ef41Sopenharmony_ci new MessageEvent('message', { source: {} }); 691cb0ef41Sopenharmony_ci }, { 701cb0ef41Sopenharmony_ci code: 'ERR_INVALID_ARG_TYPE', 711cb0ef41Sopenharmony_ci message: /The "init\.source" property must be an instance of MessagePort/, 721cb0ef41Sopenharmony_ci }); 731cb0ef41Sopenharmony_ci assert.throws(() => { 741cb0ef41Sopenharmony_ci new MessageEvent('message', { ports: 0 }); 751cb0ef41Sopenharmony_ci }, { 761cb0ef41Sopenharmony_ci message: /ports is not iterable/, 771cb0ef41Sopenharmony_ci }); 781cb0ef41Sopenharmony_ci assert.throws(() => { 791cb0ef41Sopenharmony_ci new MessageEvent('message', { ports: [ null ] }); 801cb0ef41Sopenharmony_ci }, { 811cb0ef41Sopenharmony_ci code: 'ERR_INVALID_ARG_TYPE', 821cb0ef41Sopenharmony_ci message: /The "init\.ports\[0\]" property must be an instance of MessagePort/, 831cb0ef41Sopenharmony_ci }); 841cb0ef41Sopenharmony_ci assert.throws(() => { 851cb0ef41Sopenharmony_ci new MessageEvent('message', { ports: [ {} ] }); 861cb0ef41Sopenharmony_ci }, { 871cb0ef41Sopenharmony_ci code: 'ERR_INVALID_ARG_TYPE', 881cb0ef41Sopenharmony_ci message: /The "init\.ports\[0\]" property must be an instance of MessagePort/, 891cb0ef41Sopenharmony_ci }); 901cb0ef41Sopenharmony_ci} 911cb0ef41Sopenharmony_ci 921cb0ef41Sopenharmony_ci{ 931cb0ef41Sopenharmony_ci assert(new MessageEvent('message') instanceof Event); 941cb0ef41Sopenharmony_ci} 95