summaryrefslogtreecommitdiff
path: root/cli/tests/unit/globals_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/unit/globals_test.ts')
-rw-r--r--cli/tests/unit/globals_test.ts112
1 files changed, 112 insertions, 0 deletions
diff --git a/cli/tests/unit/globals_test.ts b/cli/tests/unit/globals_test.ts
new file mode 100644
index 000000000..aa8b4f46e
--- /dev/null
+++ b/cli/tests/unit/globals_test.ts
@@ -0,0 +1,112 @@
+// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+import { unitTest, assert } from "./test_util.ts";
+
+unitTest(function globalThisExists(): void {
+ assert(globalThis != null);
+});
+
+unitTest(function windowExists(): void {
+ assert(window != null);
+});
+
+unitTest(function selfExists(): void {
+ assert(self != null);
+});
+
+unitTest(function windowWindowExists(): void {
+ assert(window.window === window);
+});
+
+unitTest(function windowSelfExists(): void {
+ assert(window.self === window);
+});
+
+unitTest(function globalThisEqualsWindow(): void {
+ assert(globalThis === window);
+});
+
+unitTest(function globalThisEqualsSelf(): void {
+ assert(globalThis === self);
+});
+
+unitTest(function DenoNamespaceExists(): void {
+ assert(Deno != null);
+});
+
+unitTest(function DenoNamespaceEqualsWindowDeno(): void {
+ assert(Deno === window.Deno);
+});
+
+unitTest(function DenoNamespaceIsFrozen(): void {
+ assert(Object.isFrozen(Deno));
+});
+
+unitTest(function webAssemblyExists(): void {
+ assert(typeof WebAssembly.compile === "function");
+});
+
+unitTest(function DenoNamespaceImmutable(): void {
+ const denoCopy = window.Deno;
+ try {
+ // @ts-ignore
+ Deno = 1;
+ } catch {}
+ assert(denoCopy === Deno);
+ try {
+ // @ts-ignore
+ window.Deno = 1;
+ } catch {}
+ assert(denoCopy === Deno);
+ try {
+ delete window.Deno;
+ } catch {}
+ assert(denoCopy === Deno);
+
+ const { readFile } = Deno;
+ try {
+ // @ts-ignore
+ Deno.readFile = 1;
+ } catch {}
+ assert(readFile === Deno.readFile);
+ try {
+ delete window.Deno.readFile;
+ } catch {}
+ assert(readFile === Deno.readFile);
+
+ // @ts-ignore
+ const { print } = Deno.core;
+ try {
+ // @ts-ignore
+ Deno.core.print = 1;
+ } catch {}
+ // @ts-ignore
+ assert(print === Deno.core.print);
+ try {
+ // @ts-ignore
+ delete Deno.core.print;
+ } catch {}
+ // @ts-ignore
+ assert(print === Deno.core.print);
+});
+
+unitTest(async function windowQueueMicrotask(): Promise<void> {
+ let resolve1: () => void | undefined;
+ let resolve2: () => void | undefined;
+ let microtaskDone = false;
+ const p1 = new Promise((res): void => {
+ resolve1 = (): void => {
+ microtaskDone = true;
+ res();
+ };
+ });
+ const p2 = new Promise((res): void => {
+ resolve2 = (): void => {
+ assert(microtaskDone);
+ res();
+ };
+ });
+ window.queueMicrotask(resolve1!);
+ setTimeout(resolve2!, 0);
+ await p1;
+ await p2;
+});