diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/unit/message_channel_test.ts | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/cli/tests/unit/message_channel_test.ts b/cli/tests/unit/message_channel_test.ts index 0cb2671d5..2c6062658 100644 --- a/cli/tests/unit/message_channel_test.ts +++ b/cli/tests/unit/message_channel_test.ts @@ -31,3 +31,29 @@ Deno.test("messagechannel", async () => { mc.port2.close(); mc2.port2.close(); }); + +Deno.test("messagechannel clone port", async () => { + const mc = new MessageChannel(); + const mc2 = new MessageChannel(); + assert(mc.port1); + assert(mc.port2); + + const promise = deferred(); + + mc.port2.onmessage = (e) => { + const { port } = e.data; + assertEquals(e.ports.length, 1); + assert(e.ports[0] instanceof MessagePort); + assertEquals(e.ports[0], port); + e.ports[0].close(); + promise.resolve(); + }; + + mc.port1.postMessage({ port: mc2.port1 }, [mc2.port1]); + mc.port1.close(); + + await promise; + + mc.port2.close(); + mc2.port2.close(); +}); |