summaryrefslogtreecommitdiff
path: root/cli/tests/data_import_test.js
blob: bbbc67743859f70557610d7419984460a1575392 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import { assertEquals } from "../../std/testing/asserts.ts";

// export const value = 'Successful import'; export default value;
import data1 from "data:application/javascript;base64,ZXhwb3J0IGNvbnN0IHZhbHVlID0gJ1N1Y2Nlc3NmdWwgaW1wb3J0JzsgZXhwb3J0IGRlZmF1bHQgdmFsdWU7";

Deno.test("static base64 data url import", () => {
  assertEquals(data1, "Successful import");
});

Deno.test("dynamic base64 data url import", async () => {
  const data2 = await import(
    // export const leet = 1337
    "data:application/javascript;base64,ZXhwb3J0IGNvbnN0IGxlZXQgPSAxMzM3"
  );
  assertEquals(data2.leet, 1337);
});

Deno.test("dynamic percent-encoding data url import", async () => {
  const data3 = await import(
    // export const value = 42;
    "data:application/javascript,export%20const%20value%20%3D%2042%3B"
  );
  assertEquals(data3.value, 42);
});

Deno.test("dynamic base64 typescript data url import", async () => {
  const data2 = await import(
    // export const leet: number = 1337;
    "data:application/typescript;base64,ZXhwb3J0IGNvbnN0IGxlZXQ6IG51bWJlciA9IDEzMzc7"
  );
  assertEquals(data2.leet, 1337);
});

Deno.test("spawn worker with data url", async () => {
  let resolve, timeout;
  const promise = new Promise((res, rej) => {
    resolve = res;
    timeout = setTimeout(() => rej("Worker timed out"), 2000);
  });

  const worker = new Worker(
    "data:application/javascript," +
      encodeURIComponent("self.onmessage = () => self.postMessage('Worker');"),
    { type: "module" },
  );

  worker.onmessage = (m) => {
    if (m.data === "Worker") {
      resolve();
    }
  };

  worker.postMessage();

  await promise;

  clearTimeout(timeout);
  worker.terminate();
});