import { init, reconcile, reconcileWithHistory } from "./index"; import * as fs from "fs"; describe("reconcile", () => { it("tries calling functions without init", () => { expect(() => reconcile("Hello", "Hello world", "Hi world")).toThrow( /call init()/ ); expect(() => reconcileWithHistory("Hello", "Hello world", "Hi world") ).toThrow(/call init()/); }); it("call reconcile without cursors", async () => { await initWasm(); expect(reconcile("Hello", "Hello world", "Hi world").text).toEqual( "Hi world" ); }); it("call reconcile with cursors", async () => { await initWasm(); const result = reconcile( "Hello", { text: "Hello world", cursors: [ { id: 3, position: 2, }, ], }, { text: "Hi world", cursors: [ { id: 4, position: 0, }, { id: 5, position: 3 }, ], } ); expect(result.text).toEqual("Hi world"); expect(result.cursors).toEqual([ { id: 3, position: 0 }, { id: 4, position: 0 }, { id: 5, position: 3 }, ]); }); it("call reconcileWithHistory", async () => { await initWasm(); const result = reconcileWithHistory("Hello", "Hello world", "Hi world"); expect(result.text).toEqual("Hi world"); expect(result.history.length).toBeGreaterThan(0); }); }); async function initWasm() { const wasmBin = fs.readFileSync("../pkg/reconcile_bg.wasm"); await init({ module_or_path: wasmBin }); }