Files
linuxcncWebWASM/web/worker/test_hal_preflight.mjs

23 lines
1.1 KiB
JavaScript

import assert from "node:assert/strict";
import { SimSession, CONTEXT_ID } from "./sim-session.mjs";
let lastSeq = 0;
const core = {
_sim_protocol_reset() {},
_sim_protocol_accept(...args) { if (args[1] !== lastSeq + 1) return -101; lastSeq = args[1]; return 0; },
_sim_create() { return 0; },
_sim_load_workspace() { return 0; },
};
const session = new SimSession(core);
const base = { schema_version: 1, context_id: CONTEXT_ID, session_id: "hal-s-1" };
assert.equal(session.accept({ ...base, kind: "HELLO", seq: 1, payload: {} }).kind, "CAPABILITIES");
assert.equal(session.accept({ ...base, kind: "SESSION_ATTACH", seq: 2, payload: {} }).kind, "SESSION_READY");
const response = session.accept({ ...base, kind: "LOAD_WORKSPACE", seq: 3, operation_id: "op-hal", payload: {
root_path: "/workspace",
hal: { manifest: [{ component: "demo" }], lines: ["loadrt demo names=d0", "loadusr -W external"] },
} });
assert.equal(response.kind, "ERROR");
assert.equal(response.payload.code, "hal_preflight");
assert.equal(response.payload.preflight.blocked_count, 1);
console.log("hal_worker_preflight=passed");