summaryrefslogtreecommitdiff
path: root/tests/unit/message_channel_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/message_channel_test.ts')
-rw-r--r--tests/unit/message_channel_test.ts55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/unit/message_channel_test.ts b/tests/unit/message_channel_test.ts
new file mode 100644
index 000000000..88fb1ba11
--- /dev/null
+++ b/tests/unit/message_channel_test.ts
@@ -0,0 +1,55 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+// NOTE: these are just sometests to test the TypeScript types. Real coverage is
+// provided by WPT.
+import { assert, assertEquals } from "@test_util/std/assert/mod.ts";
+
+Deno.test("messagechannel", async () => {
+ const mc = new MessageChannel();
+ const mc2 = new MessageChannel();
+ assert(mc.port1);
+ assert(mc.port2);
+
+ const { promise, resolve } = Promise.withResolvers<void>();
+
+ mc.port2.onmessage = (e) => {
+ assertEquals(e.data, "hello");
+ assertEquals(e.ports.length, 1);
+ assert(e.ports[0] instanceof MessagePort);
+ e.ports[0].close();
+ resolve();
+ };
+
+ mc.port1.postMessage("hello", [mc2.port1]);
+ mc.port1.close();
+
+ await promise;
+
+ 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, resolve } = Promise.withResolvers<void>();
+
+ 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();
+ resolve();
+ };
+
+ mc.port1.postMessage({ port: mc2.port1 }, [mc2.port1]);
+ mc.port1.close();
+
+ await promise;
+
+ mc.port2.close();
+ mc2.port2.close();
+});