diff options
author | Luca Casonato <hello@lcas.dev> | 2021-06-22 16:30:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-22 16:30:16 +0200 |
commit | 6261c89e04b8f1a3aabc771dbc8cddad904710e9 (patch) | |
tree | 6b1814991d77b8f238e507aa2f52e93589f3c0a1 /cli/tests/workers/test.ts | |
parent | 0a2ced57285aa0ee4b47426382c32fb53c4e07cd (diff) |
feat: transfer MessagePort between workers (#11076)
Add support for transferring `MessagePort`s between workers.
Diffstat (limited to 'cli/tests/workers/test.ts')
-rw-r--r-- | cli/tests/workers/test.ts | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/cli/tests/workers/test.ts b/cli/tests/workers/test.ts index 6a572b92f..b37b7aeb1 100644 --- a/cli/tests/workers/test.ts +++ b/cli/tests/workers/test.ts @@ -769,3 +769,56 @@ Deno.test({ worker.terminate(); }, }); + +Deno.test({ + name: "worker with relative specifier", + fn: async function (): Promise<void> { + assertEquals(location.href, "http://127.0.0.1:4545/cli/tests/"); + const promise = deferred(); + const w = new Worker( + "./workers/test_worker.ts", + { type: "module", name: "tsWorker" }, + ); + w.onmessage = (e): void => { + assertEquals(e.data, "Hello, world!"); + promise.resolve(); + }; + w.postMessage("Hello, world!"); + await promise; + w.terminate(); + }, +}); + +Deno.test({ + name: "Send MessagePorts from / to workers", + fn: async function (): Promise<void> { + const result = deferred(); + const worker = new Worker( + new URL("message_port.ts", import.meta.url).href, + { type: "module" }, + ); + + const channel = new MessageChannel(); + + worker.onmessage = (e) => { + assertEquals(e.data, "1"); + assertEquals(e.ports.length, 1); + const port1 = e.ports[0]; + port1.onmessage = (e) => { + assertEquals(e.data, true); + port1.close(); + worker.postMessage("3", [channel.port1]); + }; + port1.postMessage("2"); + }; + + channel.port2.onmessage = (e) => { + assertEquals(e.data, true); + channel.port2.close(); + result.resolve(); + }; + + await result; + worker.terminate(); + }, +}); |