21 lines
1.4 KiB
JavaScript
21 lines
1.4 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFile } from "node:fs/promises";
|
|
import createModule from "../../build-wasm/linuxcnc-sim-core.js";
|
|
import { SimSession, CONTEXT_ID } from "./sim-session.mjs";
|
|
|
|
const wasmBinary = await readFile(new URL("../../build-wasm/linuxcnc-sim-core.wasm", import.meta.url));
|
|
const core = await createModule({ wasmBinary });
|
|
const session = new SimSession(core, { sessionId: "s-real" });
|
|
const base = { schema_version: 1, context_id: CONTEXT_ID, session_id: "s-real" };
|
|
|
|
assert.equal(session.accept({ ...base, kind: "HELLO", seq: 1, payload: {} }).kind, "CAPABILITIES");
|
|
assert.equal(session.accept({ ...base, kind: "SESSION_ATTACH", seq: 2, operation_id: "op-2", payload: {} }).kind, "SESSION_READY");
|
|
assert.equal(session.accept({ ...base, kind: "LOAD_WORKSPACE", seq: 3, operation_id: "op-3", payload: { root_path: "/workspace" } }).payload.status, "verified");
|
|
const stepped = session.accept({ ...base, kind: "SIM_STEP", seq: 4, operation_id: "op-4", payload: { cycles: 11 } });
|
|
assert.equal(stepped.simulation_tick, 11);
|
|
assert.equal(core._sim_protocol_last_seq(), 4);
|
|
assert.equal(core._sim_protocol_tick(), 11);
|
|
assert.equal(core._sim_event_count(), 4);
|
|
assert.equal(session.accept({ ...base, kind: "SNAPSHOT_REQUEST", seq: 6, payload: {} }).payload.code, "protocol_sequence");
|
|
console.log("wasm_session=passed tick=" + stepped.simulation_tick);
|