数控系统仿真软件,从linuxcnc移植过来的
结论:新增 coordinate_offsets 文件执行路径专用 WASM/浏览器验证,保留 MDI 路径状态读回,并通过 native、Node WASM、browser 与 host 聚合 smoke 验证。
This commit is contained in:
@@ -297,6 +297,11 @@ file execution ABI,
|
|||||||
post-execute position parameters differently than the line-by-line MDI smoke;
|
post-execute position parameters differently than the line-by-line MDI smoke;
|
||||||
both expectations now also pin post-execute modal, override, spindle, mist,
|
both expectations now also pin post-execute modal, override, spindle, mist,
|
||||||
and flood `_setup` state readback.
|
and flood `_setup` state readback.
|
||||||
|
`coordinate_offsets` also uses a dedicated file-path expectation because
|
||||||
|
LinuxCNC file execution leaves the post-execute position parameters at the
|
||||||
|
file-path reset state while the line-by-line MDI path exposes the active G55
|
||||||
|
offset values; both paths pin the post-execute modal, override, spindle, mist,
|
||||||
|
and flood `_setup` state.
|
||||||
`tool_semantics` also pins the post-execute position-parameter and modal,
|
`tool_semantics` also pins the post-execute position-parameter and modal,
|
||||||
override, spindle, mist, and flood `_setup` state after T/M6/G43/G49/M61
|
override, spindle, mist, and flood `_setup` state after T/M6/G43/G49/M61
|
||||||
tool behavior.
|
tool behavior.
|
||||||
@@ -397,7 +402,6 @@ Node WASM file-path coverage currently includes:
|
|||||||
- `length_units`
|
- `length_units`
|
||||||
- `modal_incremental`
|
- `modal_incremental`
|
||||||
- `plane_selection`
|
- `plane_selection`
|
||||||
- `coordinate_offsets`
|
|
||||||
- `g53_machine_coordinates`
|
- `g53_machine_coordinates`
|
||||||
- `feed_control_modes`
|
- `feed_control_modes`
|
||||||
- `probe_semantics`
|
- `probe_semantics`
|
||||||
@@ -418,6 +422,7 @@ Node WASM file-path coverage currently includes:
|
|||||||
- `file_open_reset`
|
- `file_open_reset`
|
||||||
- `percent_file_finish`
|
- `percent_file_finish`
|
||||||
- `oword_subroutine`
|
- `oword_subroutine`
|
||||||
|
- `coordinate_offsets` through the dedicated `canon_file/` expectation
|
||||||
- `position_params` through the dedicated `canon_file/` expectation
|
- `position_params` through the dedicated `canon_file/` expectation
|
||||||
- `namedparam_ini_semantics` through the INI-aware file ABI
|
- `namedparam_ini_semantics` through the INI-aware file ABI
|
||||||
- `namedparam_semantics` through the INI-aware file ABI
|
- `namedparam_semantics` through the INI-aware file ABI
|
||||||
@@ -498,7 +503,6 @@ Browser interpreter file-path coverage currently includes the same
|
|||||||
- `length_units`
|
- `length_units`
|
||||||
- `modal_incremental`
|
- `modal_incremental`
|
||||||
- `plane_selection`
|
- `plane_selection`
|
||||||
- `coordinate_offsets`
|
|
||||||
- `g53_machine_coordinates`
|
- `g53_machine_coordinates`
|
||||||
- `feed_control_modes`
|
- `feed_control_modes`
|
||||||
- `probe_semantics`
|
- `probe_semantics`
|
||||||
@@ -519,6 +523,7 @@ Browser interpreter file-path coverage currently includes the same
|
|||||||
- `file_open_reset`
|
- `file_open_reset`
|
||||||
- `percent_file_finish`
|
- `percent_file_finish`
|
||||||
- `oword_subroutine`
|
- `oword_subroutine`
|
||||||
|
- `coordinate_offsets` through the dedicated `canon_file/` expectation
|
||||||
- `position_params` through the dedicated `canon_file/` expectation
|
- `position_params` through the dedicated `canon_file/` expectation
|
||||||
- `namedparam_ini_semantics` through the INI-aware file ABI
|
- `namedparam_ini_semantics` through the INI-aware file ABI
|
||||||
- `namedparam_semantics` through the INI-aware file ABI
|
- `namedparam_semantics` through the INI-aware file ABI
|
||||||
@@ -538,9 +543,9 @@ canned-cycle, state-tag motion, tool-table setup, and O-word subroutine
|
|||||||
fixtures, plus threading/rigid tap, NURBS dispatch boundaries, and the
|
fixtures, plus threading/rigid tap, NURBS dispatch boundaries, and the
|
||||||
comparable canonical runtime edge and program-end cleanup calls. The
|
comparable canonical runtime edge and program-end cleanup calls. The
|
||||||
standalone vendored-source harness, Node WASM smoke, and browser smoke also
|
standalone vendored-source harness, Node WASM smoke, and browser smoke also
|
||||||
pin `feed_control_modes`, the `position_params` MDI/file-path,
|
pin `coordinate_offsets` MDI/file-path, `feed_control_modes`, the
|
||||||
`tool_semantics`, and `canon_runtime_edges` post-program modal, override,
|
`position_params` MDI/file-path, `tool_semantics`, and `canon_runtime_edges`
|
||||||
spindle, mist, and flood `_setup` state. The same upstream baseline also
|
post-program modal, override, spindle, mist, and flood `_setup` state. The same upstream baseline also
|
||||||
validates the current negative fixture error text and absent canonical-event
|
validates the current negative fixture error text and absent canonical-event
|
||||||
constraints. Fixtures that depend on standalone-only runtime
|
constraints. Fixtures that depend on standalone-only runtime
|
||||||
adapters, HAL state, upstream `rs274` output gaps such as
|
adapters, HAL state, upstream `rs274` output gaps such as
|
||||||
|
|||||||
@@ -98,9 +98,9 @@ semantic rewrites:
|
|||||||
fixtures; it also covers threading/rigid tap, NURBS dispatch boundaries, and
|
fixtures; it also covers threading/rigid tap, NURBS dispatch boundaries, and
|
||||||
comparable canonical runtime edge and program-end cleanup calls. The
|
comparable canonical runtime edge and program-end cleanup calls. The
|
||||||
vendored-source native harness plus Node WASM and browser smokes also pin
|
vendored-source native harness plus Node WASM and browser smokes also pin
|
||||||
`feed_control_modes`, the `position_params` MDI/file-path,
|
`coordinate_offsets` MDI/file-path, `feed_control_modes`, the
|
||||||
`tool_semantics`, and `canon_runtime_edges` post-program modal, override,
|
`position_params` MDI/file-path, `tool_semantics`, and `canon_runtime_edges`
|
||||||
spindle, mist, and flood `_setup` state. It now also checks the negative fixture set
|
post-program modal, override, spindle, mist, and flood `_setup` state. It now also checks the negative fixture set
|
||||||
against upstream `rs274 -g` for expected error text and absent canonical
|
against upstream `rs274 -g` for expected error text and absent canonical
|
||||||
event constraints.
|
event constraints.
|
||||||
HAL-backed adapter-heavy fixtures, standalone modal-state assertions, and upstream
|
HAL-backed adapter-heavy fixtures, standalone modal-state assertions, and upstream
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
INTERP_BASELINE_INI_FIXTURE,
|
INTERP_BASELINE_INI_FIXTURE,
|
||||||
INTERP_BROWSER_FILE_FIXTURES,
|
INTERP_BROWSER_FILE_FIXTURES,
|
||||||
INTERP_BROWSER_MDI_FIXTURES,
|
INTERP_BROWSER_MDI_FIXTURES,
|
||||||
|
INTERP_COORDINATE_OFFSETS_FILE_FIXTURE,
|
||||||
INTERP_ERROR_FIXTURES,
|
INTERP_ERROR_FIXTURES,
|
||||||
INTERP_INI_FIXTURE,
|
INTERP_INI_FIXTURE,
|
||||||
INTERP_POSITION_PARAMS_FILE_FIXTURE,
|
INTERP_POSITION_PARAMS_FILE_FIXTURE,
|
||||||
@@ -253,6 +254,21 @@
|
|||||||
baselineIniExpectedText,
|
baselineIniExpectedText,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const coordinateOffsetsText = await fetchText(
|
||||||
|
`../fixtures/gcode/${INTERP_COORDINATE_OFFSETS_FILE_FIXTURE}.ngc`,
|
||||||
|
);
|
||||||
|
const coordinateOffsetsPath = `/work/${INTERP_COORDINATE_OFFSETS_FILE_FIXTURE}.ngc`;
|
||||||
|
interp.writeTextFile(coordinateOffsetsPath, coordinateOffsetsText);
|
||||||
|
verifyExpectedOutput(
|
||||||
|
`${INTERP_COORDINATE_OFFSETS_FILE_FIXTURE}_file`,
|
||||||
|
interp.runFile(coordinateOffsetsPath),
|
||||||
|
(
|
||||||
|
await fetchText(
|
||||||
|
`../fixtures/canon_file/${INTERP_COORDINATE_OFFSETS_FILE_FIXTURE}.events`,
|
||||||
|
)
|
||||||
|
).trimEnd(),
|
||||||
|
);
|
||||||
|
|
||||||
const positionParamsText = await fetchText(
|
const positionParamsText = await fetchText(
|
||||||
`../fixtures/gcode/${INTERP_POSITION_PARAMS_FILE_FIXTURE}.ngc`,
|
`../fixtures/gcode/${INTERP_POSITION_PARAMS_FILE_FIXTURE}.ngc`,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -10,3 +10,19 @@ canon_event=SET_G92_OFFSET x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
|||||||
canon_event=SET_G5X_OFFSET index=1 x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
canon_event=SET_G5X_OFFSET index=1 x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
canon_event=SET_G92_OFFSET x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
canon_event=SET_G92_OFFSET x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
canon_event=SET_XY_ROTATION rotation=0
|
canon_event=SET_XY_ROTATION rotation=0
|
||||||
|
setup.current_x=0
|
||||||
|
setup.current_y=0
|
||||||
|
setup.current_z=0
|
||||||
|
setup.parameter_5420=-4
|
||||||
|
setup.parameter_5421=-5
|
||||||
|
setup.parameter_5422=-6
|
||||||
|
post_execute.plane=1
|
||||||
|
post_execute.distance_mode=0
|
||||||
|
post_execute.feed_mode=0
|
||||||
|
post_execute.motion_mode=0
|
||||||
|
post_execute.origin_index=1
|
||||||
|
post_execute.feed_override=0
|
||||||
|
post_execute.speed_override_0=0
|
||||||
|
post_execute.spindle_turning_0=1
|
||||||
|
post_execute.mist=0
|
||||||
|
post_execute.flood=0
|
||||||
|
|||||||
31
wasm-port/tests/fixtures/canon_file/coordinate_offsets.events
vendored
Normal file
31
wasm-port/tests/fixtures/canon_file/coordinate_offsets.events
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
file_open=0
|
||||||
|
file_read_count=7
|
||||||
|
file_execute_count=6
|
||||||
|
canon_event=SELECT_PLANE plane=1
|
||||||
|
canon_event=STRAIGHT_TRAVERSE line=1 x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
|
canon_event=SET_G5X_OFFSET index=2 x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
|
canon_event=SET_G92_OFFSET x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
|
canon_event=SET_XY_ROTATION rotation=0
|
||||||
|
canon_event=SET_G5X_OFFSET index=2 x=4 y=5 z=6 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
|
canon_event=SET_XY_ROTATION rotation=0
|
||||||
|
canon_event=SET_G92_OFFSET x=-14 y=-25 z=-36 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
|
canon_event=SET_G92_OFFSET x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
|
canon_event=SET_G5X_OFFSET index=1 x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
|
canon_event=SET_G92_OFFSET x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
|
||||||
|
canon_event=SET_XY_ROTATION rotation=0
|
||||||
|
setup.current_x=0
|
||||||
|
setup.current_y=0
|
||||||
|
setup.current_z=0
|
||||||
|
setup.parameter_5420=0
|
||||||
|
setup.parameter_5421=0
|
||||||
|
setup.parameter_5422=0
|
||||||
|
post_execute.plane=1
|
||||||
|
post_execute.distance_mode=0
|
||||||
|
post_execute.feed_mode=0
|
||||||
|
post_execute.motion_mode=0
|
||||||
|
post_execute.origin_index=1
|
||||||
|
post_execute.feed_override=0
|
||||||
|
post_execute.speed_override_0=0
|
||||||
|
post_execute.spindle_turning_0=1
|
||||||
|
post_execute.mist=0
|
||||||
|
post_execute.flood=0
|
||||||
@@ -45,7 +45,6 @@ export const INTERP_FILE_FIXTURES = [
|
|||||||
"length_units",
|
"length_units",
|
||||||
"modal_incremental",
|
"modal_incremental",
|
||||||
"plane_selection",
|
"plane_selection",
|
||||||
"coordinate_offsets",
|
|
||||||
"g53_machine_coordinates",
|
"g53_machine_coordinates",
|
||||||
"feed_control_modes",
|
"feed_control_modes",
|
||||||
"probe_semantics",
|
"probe_semantics",
|
||||||
@@ -72,4 +71,5 @@ export const INTERP_BROWSER_FILE_FIXTURES = INTERP_FILE_FIXTURES;
|
|||||||
|
|
||||||
export const INTERP_INI_FIXTURE = "namedparam_semantics";
|
export const INTERP_INI_FIXTURE = "namedparam_semantics";
|
||||||
export const INTERP_BASELINE_INI_FIXTURE = "namedparam_ini_semantics";
|
export const INTERP_BASELINE_INI_FIXTURE = "namedparam_ini_semantics";
|
||||||
|
export const INTERP_COORDINATE_OFFSETS_FILE_FIXTURE = "coordinate_offsets";
|
||||||
export const INTERP_POSITION_PARAMS_FILE_FIXTURE = "position_params";
|
export const INTERP_POSITION_PARAMS_FILE_FIXTURE = "position_params";
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import assert from "node:assert/strict";
|
|||||||
import { createLinuxCncInterpSdk } from "../../../runtime/sdk/src/index.js";
|
import { createLinuxCncInterpSdk } from "../../../runtime/sdk/src/index.js";
|
||||||
import {
|
import {
|
||||||
INTERP_BASELINE_INI_FIXTURE,
|
INTERP_BASELINE_INI_FIXTURE,
|
||||||
|
INTERP_COORDINATE_OFFSETS_FILE_FIXTURE,
|
||||||
INTERP_ERROR_FIXTURES,
|
INTERP_ERROR_FIXTURES,
|
||||||
INTERP_FILE_FIXTURES,
|
INTERP_FILE_FIXTURES,
|
||||||
INTERP_INI_FIXTURE,
|
INTERP_INI_FIXTURE,
|
||||||
@@ -262,6 +263,26 @@ verifyExpectedOutput(
|
|||||||
baselineIniExpected,
|
baselineIniExpected,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const coordinateOffsetsFilePath = `/work/${INTERP_COORDINATE_OFFSETS_FILE_FIXTURE}.ngc`;
|
||||||
|
interp.writeTextFile(
|
||||||
|
coordinateOffsetsFilePath,
|
||||||
|
readFileSync(
|
||||||
|
resolve(rootDir, `tests/fixtures/gcode/${INTERP_COORDINATE_OFFSETS_FILE_FIXTURE}.ngc`),
|
||||||
|
"utf8",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
verifyExpectedOutput(
|
||||||
|
`${INTERP_COORDINATE_OFFSETS_FILE_FIXTURE}_file`,
|
||||||
|
interp.runFile(coordinateOffsetsFilePath),
|
||||||
|
readFileSync(
|
||||||
|
resolve(
|
||||||
|
rootDir,
|
||||||
|
`tests/fixtures/canon_file/${INTERP_COORDINATE_OFFSETS_FILE_FIXTURE}.events`,
|
||||||
|
),
|
||||||
|
"utf8",
|
||||||
|
).trimEnd(),
|
||||||
|
);
|
||||||
|
|
||||||
const positionParamsFilePath = "/work/position_params.ngc";
|
const positionParamsFilePath = "/work/position_params.ngc";
|
||||||
interp.writeTextFile(
|
interp.writeTextFile(
|
||||||
positionParamsFilePath,
|
positionParamsFilePath,
|
||||||
|
|||||||
Reference in New Issue
Block a user