exercism/wasm/hello-world/hello-world.spec.js

40 lines
1 KiB
JavaScript

import { compileWat, WasmRunner } from "@exercism/wasm-lib";
let wasmModule;
let currentInstance;
beforeAll(async () => {
try {
const watPath = new URL("./hello-world.wat", import.meta.url);
const { buffer } = await compileWat(watPath);
wasmModule = await WebAssembly.compile(buffer);
} catch (err) {
console.log(`Error compiling *.wat: \n${err}`);
process.exit(1);
}
});
describe("Hello World", () => {
beforeEach(async () => {
currentInstance = null;
if (!wasmModule) {
return Promise.reject();
}
try {
currentInstance = await new WasmRunner(wasmModule);
return Promise.resolve();
} catch (err) {
console.log(`Error instantiating WebAssembly module: ${err}`);
return Promise.reject();
}
});
test("Say Hi!", () => {
expect(currentInstance).toBeTruthy();
const [offset, length] = currentInstance.exports.hello();
expect(length).toBe(13);
const greeting = currentInstance.get_mem_as_utf8(offset, length);
expect(greeting).toBe("Hello, World!");
});
});