diff options
author | Valentin Anger <syrupthinker@gryphno.de> | 2020-09-11 22:40:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-11 22:40:48 +0200 |
commit | e3319f34a6ece36eab3138eae83c8d0e18fcc07c (patch) | |
tree | c194f400d91d11b9a29416e1697d00d8cf2e3628 /cli/tests/data_import_test.js | |
parent | a3282aa9ed749f2e80618c6e2f25047d9a2bb2d8 (diff) |
feat(unstable): Support data: urls (#5157)
Diffstat (limited to 'cli/tests/data_import_test.js')
-rw-r--r-- | cli/tests/data_import_test.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/cli/tests/data_import_test.js b/cli/tests/data_import_test.js new file mode 100644 index 000000000..bbbc67743 --- /dev/null +++ b/cli/tests/data_import_test.js @@ -0,0 +1,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(); +}); |