summaryrefslogtreecommitdiff
path: root/test/parallel/test-worker-message-event.js
blob: bbc2e3b612686e61035fe29373cc2edb06afaccc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
'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);
}