53 lines
2.3 KiB
JavaScript
53 lines
2.3 KiB
JavaScript
import assert from "node:assert/strict";
|
|
|
|
import { createLinuxCncKinematicsRuntime } from "../../app/src/runtime/linuxcnc-kinematics-runtime.js";
|
|
import { buildRtcpFrame } from "../../app/src/runtime/rtcp-frame.js";
|
|
|
|
const runtime = await createLinuxCncKinematicsRuntime({ moduleId: "xyzac-trt" });
|
|
const readiness = runtime.readiness();
|
|
|
|
assert.equal(runtime.apiName, "web-rtcp-5axis-linuxcnc-kinematics-runtime");
|
|
assert.equal(runtime.moduleId, "xyzac-trt");
|
|
assert.equal(runtime.loaded, true);
|
|
assert.equal(runtime.sourceMode, "source-derived-kinematics-wasm");
|
|
assert.equal(runtime.semanticBoundary, "linuxcnc_kinematics_wasm_c_abi");
|
|
assert.equal(runtime.executionContext, "direct");
|
|
assert.equal(runtime.wasmFile, "linuxcnc_xyzac_trt_kinematics.wasm");
|
|
assert.equal(readiness.loaded, true);
|
|
assert.equal(readiness.executionContext, "direct");
|
|
assert.equal(readiness.supportedModules.includes("xyzac-trt"), true);
|
|
assert.equal(runtime.switchRc, 0);
|
|
|
|
const linuxCncKinematicsResult = runtime.frameForJoints([10, 20, 30, 25, 40]);
|
|
assert.equal(linuxCncKinematicsResult.moduleId, "xyzac-trt");
|
|
assert.equal(linuxCncKinematicsResult.forward.rc, 0);
|
|
assert.equal(linuxCncKinematicsResult.inverse.rc, 0);
|
|
assert.deepEqual(
|
|
linuxCncKinematicsResult.inverse.joints.map((value) => Math.round(value * 1e6) / 1e6),
|
|
[10, 20, 30, 25, 40],
|
|
);
|
|
|
|
const frame = buildRtcpFrame({
|
|
axisPose: { x: 10, y: 20, z: 30, a: 25, b: 0, c: 40 },
|
|
activeLine: 777,
|
|
kinsType: "tcp-xyzac",
|
|
rtcpEnabled: true,
|
|
linuxCncKinematicsResult,
|
|
});
|
|
|
|
assert.equal(frame.sourceMode, "source-derived-kinematics-wasm");
|
|
assert.equal(frame.semanticBoundary, "linuxcnc_kinematics_wasm_c_abi");
|
|
assert.equal(frame.readiness.linuxCncKinematicsReady, true);
|
|
assert.equal(frame.readiness.promotionAllowed, true);
|
|
assert.equal(frame.readiness.fullLinuxCncProgramExecutionReady, false);
|
|
assert.equal(frame.kinematicsModuleId, "xyzac-trt");
|
|
assert.equal(frame.kinematicsForwardRc, 0);
|
|
assert.equal(frame.kinematicsInverseRc, 0);
|
|
assert.equal(frame.jointPose[3].value, 25);
|
|
assert.equal(frame.jointPose[4].value, 40);
|
|
assert.equal(frame.tcpPose.x, linuxCncKinematicsResult.forward.pose.x);
|
|
assert.equal(frame.tcpPose.y, linuxCncKinematicsResult.forward.pose.y);
|
|
assert.equal(frame.tcpPose.z, linuxCncKinematicsResult.forward.pose.z);
|
|
|
|
console.log("linuxcnc_kinematics_runtime_smoke=ok");
|