按规划继续工作
结论:OPFS 参数文件已通过桥接进入 LinuxCNC-backed WASM restore/save 路径,native 与 host/WASM/browser 验证全部通过。
This commit is contained in:
@@ -28,6 +28,10 @@ import {
|
||||
saveGcodeProgram,
|
||||
saveMachineTextFiles,
|
||||
} from "../../../runtime/opfs/machine-file-store.js";
|
||||
import {
|
||||
restoreMachineParametersFromOpfs,
|
||||
saveMachineParametersToOpfs,
|
||||
} from "../../../runtime/opfs/linuxcnc-parameter-bridge.js";
|
||||
|
||||
class MockFileHandle {
|
||||
constructor(name) {
|
||||
@@ -153,6 +157,57 @@ assert.equal(
|
||||
);
|
||||
assert.equal(await loadGcodeProgram("fixture.ngc", { storage }), "G0 X0 Y0\nM2\n");
|
||||
|
||||
const bridgeFiles = new Map();
|
||||
const bridgeInterp = {
|
||||
writeTextFile(path, text) {
|
||||
bridgeFiles.set(path, text);
|
||||
},
|
||||
readTextFile(path) {
|
||||
if (!bridgeFiles.has(path)) {
|
||||
throw new Error(`missing wasm file: ${path}`);
|
||||
}
|
||||
return bridgeFiles.get(path);
|
||||
},
|
||||
restoreParameters(path) {
|
||||
return `restore_parameters=0\nrestore_path=${path}\n`;
|
||||
},
|
||||
saveParameters(path, values) {
|
||||
bridgeFiles.set(path, "5161\t12.340000\n5162\t56.780000\n");
|
||||
bridgeFiles.set(`${path}.bak`, "5161 0.0\n5162 0.0\n");
|
||||
return `save_parameters=0\nsave_path=${path}\nvalues=${Object.keys(values).join(",")}\n`;
|
||||
},
|
||||
};
|
||||
|
||||
const restoredParameters = await restoreMachineParametersFromOpfs(
|
||||
bridgeInterp,
|
||||
"xyzab-tdr",
|
||||
{ storage, wasmPath: "/work/bridge.var" },
|
||||
);
|
||||
assert.deepEqual(restoredParameters, {
|
||||
opfsPath: "linuxcnc/machines/xyzab-tdr/linuxcnc.var",
|
||||
wasmPath: "/work/bridge.var",
|
||||
result: "restore_parameters=0\nrestore_path=/work/bridge.var\n",
|
||||
});
|
||||
assert.equal(bridgeFiles.get("/work/bridge.var"), "5161 0.0\n5162 0.0\n");
|
||||
|
||||
const savedParameters = await saveMachineParametersToOpfs(
|
||||
bridgeInterp,
|
||||
"xyzab-tdr",
|
||||
{ 5161: 12.34, 5162: 56.78 },
|
||||
{ storage, wasmPath: "/work/bridge.var" },
|
||||
);
|
||||
assert.equal(savedParameters.opfsPath, "linuxcnc/machines/xyzab-tdr/linuxcnc.var");
|
||||
assert.equal(savedParameters.backupOpfsPath, "linuxcnc/machines/xyzab-tdr/linuxcnc.var.bak");
|
||||
assert.equal(savedParameters.result.includes("save_parameters=0"), true);
|
||||
assert.equal(
|
||||
await loadTextFile("linuxcnc/machines/xyzab-tdr/linuxcnc.var", storage),
|
||||
"5161\t12.340000\n5162\t56.780000\n",
|
||||
);
|
||||
assert.equal(
|
||||
await loadTextFile("linuxcnc/machines/xyzab-tdr/linuxcnc.var.bak", storage),
|
||||
"5161 0.0\n5162 0.0\n",
|
||||
);
|
||||
|
||||
await assert.rejects(
|
||||
() => loadTextFile("linuxcnc/machines/missing.ini", storage),
|
||||
/missing file/,
|
||||
|
||||
Reference in New Issue
Block a user