import assert from "node:assert/strict"; import { readFile } from "node:fs/promises"; import { applyIniConfigToProfile, parseLinuxCncIni, } from "../../app/src/runtime/linuxcnc-ini-runtime.js"; import { xyzacTrtProfile } from "../../app/src/profiles/xyzac-trt.js"; import { xyzbcTrtProfile } from "../../app/src/profiles/xyzbc-trt.js"; const xyzacIniText = await readFile( new URL("../../../wasm-port/vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", import.meta.url), "utf8", ); const xyzbcIniText = await readFile( new URL("../../../wasm-port/vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", import.meta.url), "utf8", ); const xyzacIni = parseLinuxCncIni(xyzacIniText, { path: xyzacTrtProfile.iniPath, profileId: xyzacTrtProfile.id, }); assert.equal(xyzacIni.apiName, "web-rtcp-5axis-linuxcnc-ini-config"); assert.equal(xyzacIni.validation.ready, true); assert.equal(xyzacIni.machineName, "sim-xyzac-trt-kins (switchkins)"); assert.equal(xyzacIni.kinematics.name, "xyzac-trt-kins"); assert.equal(xyzacIni.kinematicsParameters.sparm, "identityfirst"); assert.equal(xyzacIni.kinematicsParameters.joints, 5); assert.equal(xyzacIni.traj.coordinates, "XYZAC"); assert.equal(xyzacIni.axisLimits.A.max, 50); assert.equal(xyzacIni.jointConfig[3].axis, "A"); assert.equal(xyzacIni.jointConfig[4].max, 36000); assert.deepEqual(xyzacIni.halui.mdiCommands, ["M429", "M428", "M430"]); assert.equal(xyzacIni.rs274ngc.remaps.map((remap) => remap.code).join(","), "M428,M429,M430"); assert.equal(xyzacIni.hal.initialSets.some((set) => set.pin === "y-offset" && set.value === 20), true); const derivedXyzac = applyIniConfigToProfile(xyzacTrtProfile, xyzacIni); assert.equal(derivedXyzac.machineName, xyzacIni.machineName); assert.equal(derivedXyzac.traj.coordinates, "XYZAC"); assert.equal(derivedXyzac.axisLimits.X.min, -200); assert.equal(derivedXyzac.jointConfig.length, 5); assert.equal(derivedXyzac.linuxCncIniConfig.path.endsWith("xyzac-trt.ini"), true); const xyzbcIni = parseLinuxCncIni(xyzbcIniText, { path: xyzbcTrtProfile.iniPath, profileId: xyzbcTrtProfile.id, }); assert.equal(xyzbcIni.validation.ready, true); assert.equal(xyzbcIni.kinematics.name, "xyzbc-trt-kins"); assert.equal(xyzbcIni.kinematicsModuleId, "xyzbc-trt"); assert.equal(xyzbcIni.traj.coordinates, "XYZBC"); assert.equal(xyzbcIni.axisLimits.B.max, 36000); assert.equal(xyzbcIni.jointConfig[3].axis, "B"); assert.equal(xyzbcIni.kinematicsParameters.switchkinsTypes[1].webKinsType, "tcp-xyzbc"); console.log("linuxcnc_ini_runtime_smoke=ok");