Advance simulation parity and 3-axis tutorial coverage

This commit is contained in:
2026-08-23 18:00:56 +08:00
parent 4a11d9692b
commit 938654b19d
107 changed files with 13537 additions and 3565 deletions

View File

@@ -2,6 +2,7 @@ import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
import createModule from "../../build-wasm/linuxcnc-sim-core.js";
import { WorkspaceRuntime } from "../workspace/runtime.mjs";
import { parseIni } from "../workspace/ini-parser.mjs";
import { ConfigurationStartupStateMachine, startConfiguration } from "../workspace/configuration.mjs";
import { SimSession, CONTEXT_ID } from "./sim-session.mjs";
@@ -10,6 +11,13 @@ const files = {
"config/machine.hal": "setp sim.x 1\n",
"config/main.ngc": "G0 X1\n",
};
const relativeIniWorkspace = new WorkspaceRuntime({ files: {
"config/nested/main.ini": "#INCLUDE ../shared.inc\n",
"config/shared.inc": "[HAL]\nHALFILE = ../machine.hal\n",
"machine.hal": "setp sim.x 1\n",
} });
const relativeIni = parseIni({ workspace: relativeIniWorkspace, entrypoint: "config/nested/main.ini" });
assert.deepEqual(relativeIni.includes.map((item) => item.path), ["config/shared.inc"]);
const manifest = [{ component: "sim" }];
const nativeCalls = [];
let nativeSeq = 0;
@@ -50,8 +58,8 @@ const ambiguous = startConfiguration({ workspace: new WorkspaceRuntime({ files:
"linuxcnc/lib/machine.hal": "setp sim.x 1\n",
"linuxcnc/lib/hallib/machine.hal": "setp sim.x 2\n",
} }), entrypoint: "config/main.ini", core: nativeCore });
assert.equal(ambiguous.status, "blocked");
assert.equal(ambiguous.resources.resources[0].code, "resource_ambiguous");
assert.equal(ambiguous.status, "ready");
assert.equal(ambiguous.resources.resources[0].path, "linuxcnc/lib/hallib/machine.hal");
const unsupportedHal = startConfiguration({ workspace: new WorkspaceRuntime({ files: { "config/main.ini": "[HAL]\nHALFILE = machine.hal\n", "config/machine.hal": "loadrt unknown names=u\n" } }), entrypoint: "config/main.ini", core: nativeCore, halManifest: [] });
assert.equal(unsupportedHal.status, "blocked");