summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
authorLeo K <crowlkats@toaxl.com>2021-08-09 10:39:00 +0200
committerGitHub <noreply@github.com>2021-08-09 10:39:00 +0200
commit16ae4a0d5799c9a4ed776f32929f73b1063ae4e8 (patch)
treeed5d0def5e0acbf67f2c64ac4664b1af46f4c468 /cli/tests
parent02c74fb70970fcadb7d1e6dab857eeb2cea20e09 (diff)
feat(extensions/web): add structuredClone function (#11572)
Co-authored-by: Luca Casonato <hello@lcas.dev>
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/unit/structured_clone_test.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/cli/tests/unit/structured_clone_test.ts b/cli/tests/unit/structured_clone_test.ts
new file mode 100644
index 000000000..f25276165
--- /dev/null
+++ b/cli/tests/unit/structured_clone_test.ts
@@ -0,0 +1,19 @@
+import { assert, assertEquals } from "./test_util.ts";
+
+// Basic tests for the structured clone algorithm. Mainly tests TypeScript
+// typings. Actual functionality is tested in WPT.
+
+Deno.test("self.structuredClone", async () => {
+ const arrayOriginal = ["hello world"];
+ const channelOriginal = new MessageChannel();
+ const [arrayCloned, portTransferred] = self
+ .structuredClone([arrayOriginal, channelOriginal.port2], {
+ transfer: [channelOriginal.port2],
+ });
+ assert(arrayOriginal !== arrayCloned); // not the same identity
+ assertEquals(arrayCloned, arrayOriginal); // but same value
+ channelOriginal.port1.postMessage("1");
+ await new Promise((resolve) => portTransferred.onmessage = () => resolve(1));
+ channelOriginal.port1.close();
+ portTransferred.close();
+});