2024-01-01 14:58:21 -05:00
|
|
|
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2021-06-21 13:53:52 -04:00
|
|
|
// NOTE: these are just sometests to test the TypeScript types. Real coverage is
|
|
|
|
// provided by WPT.
|
2024-02-07 11:51:28 -05:00
|
|
|
import { assert, assertEquals } from "@test_util/std/assert/mod.ts";
|
2021-06-21 13:53:52 -04:00
|
|
|
|
|
|
|
Deno.test("messagechannel", async () => {
|
|
|
|
const mc = new MessageChannel();
|
|
|
|
const mc2 = new MessageChannel();
|
|
|
|
assert(mc.port1);
|
|
|
|
assert(mc.port2);
|
|
|
|
|
2023-11-10 16:29:09 -05:00
|
|
|
const { promise, resolve } = Promise.withResolvers<void>();
|
2021-06-21 13:53:52 -04:00
|
|
|
|
|
|
|
mc.port2.onmessage = (e) => {
|
|
|
|
assertEquals(e.data, "hello");
|
|
|
|
assertEquals(e.ports.length, 1);
|
|
|
|
assert(e.ports[0] instanceof MessagePort);
|
|
|
|
e.ports[0].close();
|
2023-11-10 16:29:09 -05:00
|
|
|
resolve();
|
2021-06-21 13:53:52 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
mc.port1.postMessage("hello", [mc2.port1]);
|
|
|
|
mc.port1.close();
|
|
|
|
|
|
|
|
await promise;
|
|
|
|
|
|
|
|
mc.port2.close();
|
|
|
|
mc2.port2.close();
|
|
|
|
});
|
2021-06-26 05:17:05 -04:00
|
|
|
|
|
|
|
Deno.test("messagechannel clone port", async () => {
|
|
|
|
const mc = new MessageChannel();
|
|
|
|
const mc2 = new MessageChannel();
|
|
|
|
assert(mc.port1);
|
|
|
|
assert(mc.port2);
|
|
|
|
|
2023-11-10 16:29:09 -05:00
|
|
|
const { promise, resolve } = Promise.withResolvers<void>();
|
2021-06-26 05:17:05 -04:00
|
|
|
|
|
|
|
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();
|
2023-11-10 16:29:09 -05:00
|
|
|
resolve();
|
2021-06-26 05:17:05 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
mc.port1.postMessage({ port: mc2.port1 }, [mc2.port1]);
|
|
|
|
mc.port1.close();
|
|
|
|
|
|
|
|
await promise;
|
|
|
|
|
|
|
|
mc.port2.close();
|
|
|
|
mc2.port2.close();
|
|
|
|
});
|