参考所有分组:补读取和圆弧 native 覆盖,测试通过
This commit is contained in:
@@ -131,6 +131,11 @@ CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/basic
|
||||
# convert_distance_mode() updates G90/G91 state, and convert_arc() routes
|
||||
# R-format arcs through src/emc/rs274ngc/interp_find.cc arc-center math.
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/incremental_and_r_arc.ngc >"$output_dir/cnc_sim_linuxcnc_incremental_and_r_arc.json"
|
||||
# Source basis: LinuxCNC src/emc/rs274ngc/interp_read.cc read_text()
|
||||
# returns INTERP_EXECUTE_FINISH for slash-prefixed block-delete lines, and
|
||||
# src/emc/rs274ngc/rs274ngc_pre.cc skips execution when block delete is on.
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_block_delete.ngc >"$output_dir/cnc_sim_linuxcnc_block_delete_off.json"
|
||||
CNC_SIM_BLOCK_DELETE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_block_delete.ngc >"$output_dir/cnc_sim_linuxcnc_block_delete_on.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rtcp_controls.ngc >"$output_dir/cnc_sim_linuxcnc_rtcp_controls.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_direction.ngc >"$output_dir/cnc_sim_linuxcnc_spindle_direction.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_modes.ngc >"$output_dir/cnc_sim_linuxcnc_spindle_modes.json"
|
||||
@@ -521,6 +526,18 @@ CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linux
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_canned_cycle_planes.ngc >"$output_dir/cnc_sim_linuxcnc_canned_cycle_planes.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_arc_planes.ngc >"$output_dir/cnc_sim_linuxcnc_arc_planes.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_arc_distance_modes.ngc >"$output_dir/cnc_sim_linuxcnc_arc_distance_modes.json"
|
||||
# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_arc()
|
||||
# passes unit-specific center-arc tolerance to src/emc/rs274ngc/interp_arc.cc
|
||||
# arc_data_ijk(), which rejects excessive start/end radius mismatch.
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_arc_center_tolerance_good_imperial.ngc >"$output_dir/cnc_sim_linuxcnc_arc_center_tolerance_good_imperial.json"
|
||||
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
|
||||
"$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_arc_center_tolerance_bad_metric.ngc \
|
||||
>"$output_dir/cnc_sim_linuxcnc_arc_center_tolerance_bad_metric.json" 2>"$output_dir/cnc_sim_linuxcnc_arc_center_tolerance_bad_metric.err"; then
|
||||
echo "expected linuxcnc_arc_center_tolerance_bad_metric.ngc to fail" >&2
|
||||
exit 1
|
||||
fi
|
||||
grep -Fq "Radius to end of arc differs from radius to start" \
|
||||
"$output_dir/cnc_sim_linuxcnc_arc_center_tolerance_bad_metric.err"
|
||||
# Source basis: LinuxCNC src/emc/rs274ngc/interp_read.cc read_atsign()
|
||||
# and read_carat() parse @/^ polar words; src/emc/rs274ngc/interp_internal.cc
|
||||
# enhance_block() restricts polar coordinates to G17 motion without X/Y words;
|
||||
@@ -653,6 +670,9 @@ CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs2
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_indexed_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_indexed_parameters.json"
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_named_parameter_normalization.ngc >"$output_dir/cnc_sim_linuxcnc_named_parameter_normalization.json"
|
||||
INI_FILE_NAME="$ini_named_parameter_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_ini_named_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_ini_named_parameter.json"
|
||||
# Source basis: LinuxCNC src/emc/rs274ngc/interp_read.cc read_real_value()
|
||||
# and close_and_downcase() accept whitespace around bracketed word values.
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_word_bracket_whitespace.ngc >"$output_dir/cnc_sim_linuxcnc_word_bracket_whitespace.json"
|
||||
# Source basis: LinuxCNC src/emc/rs274ngc/interp_namedparams.cc lookup_named_param()
|
||||
# and init_readonly_param() expose modal/unit/feed/spindle readonly parameters.
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_readonly_named_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_readonly_named_parameters.json"
|
||||
@@ -847,6 +867,25 @@ required_motion = {"set-units", "set-plane", "set-spindle", "rapid", "set-feed",
|
||||
check(OUTPUT_DIR / "cnc_sim_linuxcnc_basic_motion.json", required_motion)
|
||||
check(OUTPUT_DIR / "cnc_sim_linuxcnc_basic_mill.json", required_motion | {"tool-change"})
|
||||
|
||||
block_delete_off = load("cnc_sim_linuxcnc_block_delete_off.json")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and event["line"] == 2 and event["end"]["x"] == 5
|
||||
for event in block_delete_off
|
||||
):
|
||||
raise SystemExit("expected LinuxCNC disabled block-delete line to execute")
|
||||
|
||||
block_delete_on = load("cnc_sim_linuxcnc_block_delete_on.json")
|
||||
if any(
|
||||
event["type"] == "linear-feed" and event["line"] == 2 and event["end"]["x"] == 5
|
||||
for event in block_delete_on
|
||||
):
|
||||
raise SystemExit("expected LinuxCNC block-delete line to be skipped")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and event["line"] == 3 and event["end"]["x"] == 2
|
||||
for event in block_delete_on
|
||||
):
|
||||
raise SystemExit("expected LinuxCNC block-delete followup line to execute")
|
||||
|
||||
controls = load("cnc_sim_linuxcnc_rtcp_controls.json")
|
||||
kin = [event for event in controls if event["type"] == "kinematics-switch"]
|
||||
if [event["reserved"] for event in kin] != [1, 0, 2]:
|
||||
@@ -1466,6 +1505,15 @@ expected_arc_centers = [(5, 5, 0), (7, 15, 0), (9, 25, 0)]
|
||||
if arc_centers != expected_arc_centers:
|
||||
raise SystemExit(f"unexpected G90.1/G91.1 arc centers: {arc_centers!r}")
|
||||
|
||||
arc_center_tolerance_good = load("cnc_sim_linuxcnc_arc_center_tolerance_good_imperial.json")
|
||||
if not any(
|
||||
event["type"] == "arc-feed" and
|
||||
event["line"] == 4 and
|
||||
event["end"]["x"] == 5
|
||||
for event in arc_center_tolerance_good
|
||||
):
|
||||
raise SystemExit("missing LinuxCNC small imperial center-format arc within tolerance")
|
||||
|
||||
incremental_r_arc = load("cnc_sim_linuxcnc_incremental_and_r_arc.json")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and
|
||||
@@ -1878,6 +1926,29 @@ expected_indexed_moves = [
|
||||
if indexed_moves != expected_indexed_moves:
|
||||
raise SystemExit(f"unexpected LinuxCNC indexed/indirect parameter motions: {indexed_moves!r}")
|
||||
|
||||
word_bracket_whitespace = load("cnc_sim_linuxcnc_word_bracket_whitespace.json")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and
|
||||
event["line"] == 3 and
|
||||
event["end"]["x"] == 3
|
||||
for event in word_bracket_whitespace
|
||||
):
|
||||
raise SystemExit("missing LinuxCNC spaced bracket word X motion")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and
|
||||
event["line"] == 4 and
|
||||
event["end"]["y"] == 3
|
||||
for event in word_bracket_whitespace
|
||||
):
|
||||
raise SystemExit("missing LinuxCNC plus-spaced bracket word Y motion")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and
|
||||
event["line"] == 5 and
|
||||
event["end"]["x"] == -3
|
||||
for event in word_bracket_whitespace
|
||||
):
|
||||
raise SystemExit("missing LinuxCNC minus-spaced bracket word X motion")
|
||||
|
||||
normalized = load("cnc_sim_linuxcnc_named_parameter_normalization.json")
|
||||
normalized_moves = [
|
||||
(event["line"], event["end"]["x"], event["end"]["y"])
|
||||
@@ -2265,6 +2336,8 @@ echo "linuxcnc rs274 native smoke passed"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_basic_motion.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_basic_mill.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_incremental_and_r_arc.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_block_delete_off.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_block_delete_on.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_rtcp_controls.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_spindle_direction.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_spindle_modes.json"
|
||||
@@ -2289,6 +2362,7 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_canned_cycles_extended.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_canned_cycle_planes.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_arc_planes.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_arc_distance_modes.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_arc_center_tolerance_good_imperial.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_predefined_positions.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_machine_coordinates.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_cutter_comp.json"
|
||||
@@ -2305,6 +2379,7 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_lowercase_numeric_oword.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_m98_mixed_styles_variables.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_named_parameter_exists.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_indexed_parameters.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_word_bracket_whitespace.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_named_parameter_normalization.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_ini_named_parameter.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_readonly_named_parameters.json"
|
||||
|
||||
Reference in New Issue
Block a user