Skip to content

Commit

Permalink
fix: Add web worker unit test
Browse files Browse the repository at this point in the history
Fix worker issue (missing globalThis)

Signed-off-by: Gordon Smith <GordonJSmith@gmail.com>
  • Loading branch information
GordonSmith committed Nov 4, 2022
1 parent 92aebf3 commit f12f5e2
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 4 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/testPullRequest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v2
with:
node-version: "16.x"
Expand Down
4 changes: 3 additions & 1 deletion karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ module.exports = function (config) {
files: [
'dist-test/index.js',
{ pattern: 'dist/*.wasm', watched: false, included: false, served: true },
{ pattern: 'dist-test/*.js', watched: false, included: false, served: true },
],
proxies: {
"/dist/": "/base/dist/"
"/dist/": "/base/dist/",
"/dist-test/": "/base/dist-test/"
},
reporters: ['spec'],
port: 9876, // karma web server port
Expand Down
1 change: 1 addition & 0 deletions rollup.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ export default [

browserTpl("lib-es6/__tests__/index", "dist-test/index", "dist-test/index.es6"),
nodeTpl("lib-es6/__tests__/index", "dist-test/index.node", "dist-test/index.node.es6"),
browserTpl("lib-es6/__tests__/worker", "dist-test/worker", "dist-test/worker.es6"),

binTpl("lib-es6/__bin__/dot-wasm", "bin/dot-wasm.mjs"),
binTpl("lib-es6/__bin__/sfx-wasm", "bin/sfx-wasm.mjs"),
Expand Down
30 changes: 29 additions & 1 deletion src/__tests__/base91.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ describe("base91", function () {
expect(data).to.deep.equal(data2);
});

it("compressed", async function () {
it("encoded", async function () {
const zstd = await Zstd.load();
const data = new Uint8Array(Array.from({ length: 1000000 }, (_, i) => i % 256));
const compressed_data = zstd.compress(data);
Expand All @@ -34,4 +34,32 @@ describe("base91", function () {
const data2 = zstd.decompress(compressed_data2);
expect(data).to.deep.equal(data2);
});

if (globalThis.window?.Worker) {
it("worker", async function () {
const data = new Uint8Array(Array.from({ length: 1000 }, (_, i) => i % 256));

const value = await new Promise(resolve => {
const myWorker = new Worker("dist-test/worker.js");
myWorker.postMessage(data);
myWorker.onmessage = function (e) {
resolve(e.data);
};
});
expect(value).to.deep.equal(data);
});

it("worker-es6", async function () {
const data = new Uint8Array(Array.from({ length: 1000 }, (_, i) => i % 256));

const value = await new Promise(resolve => {
const myWorker = new Worker("dist-test/worker.es6.js");
myWorker.postMessage(data);
myWorker.onmessage = function (e) {
resolve(e.data);
};
});
expect(value).to.deep.equal(data);
});
}
});
8 changes: 8 additions & 0 deletions src/__tests__/worker.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { Base91 } from "../index";

onmessage = async function (e) {
const base91 = await Base91.load();
const base91Str = base91.encode(e.data);
const data = base91.decode(base91Str);
postMessage(data);
};
2 changes: 1 addition & 1 deletion src/fetch-browser.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
let _scriptDir = (document?.currentScript as any)?.src ?? "";
let _scriptDir = (globalThis.document?.currentScript as any)?.src ?? "";
export const scriptDir = _scriptDir.substring(0, _scriptDir.replace(/[?#].*/, "").lastIndexOf('/') + 1) + "../dist";

0 comments on commit f12f5e2

Please sign in to comment.