summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Haberler <git@mah.priv.at>2011-06-09 13:06:28 +0200
committerMichael Haberler <git@mah.priv.at>2011-10-28 08:25:44 +0200
commit0d93f31399cd030b06494f0b12600b6e4e23ec6e (patch)
tree529d16e6abca82fe4d591c2dc0c2b48e8b020501
parente2f7f24f5d4704dc1fef61d8717f61b0362ffd63 (diff)
downloadlinuxcnc-0d93f31399cd030b06494f0b12600b6e4e23ec6e.tar.gz
linuxcnc-0d93f31399cd030b06494f0b12600b6e4e23ec6e.zip
commit all remap regression tests
-rw-r--r--tests/remap/fail/args.0/README1
-rw-r--r--tests/remap/fail/args.0/expected15
-rw-r--r--tests/remap/fail/args.0/rm400.ngc18
-rw-r--r--tests/remap/fail/args.0/test.ini9
-rw-r--r--tests/remap/fail/args.0/test.ngc2
-rwxr-xr-xtests/remap/fail/args.0/test.sh3
-rw-r--r--tests/remap/fail/args.2/README3
-rw-r--r--tests/remap/fail/args.2/expected15
-rw-r--r--tests/remap/fail/args.2/rm400.ngc18
-rw-r--r--tests/remap/fail/args.2/test.ini1
-rw-r--r--tests/remap/fail/args.2/test.ngc2
-rwxr-xr-xtests/remap/fail/args.2/test.sh3
-rw-r--r--tests/remap/fail/body-py/README3
-rw-r--r--tests/remap/fail/body-py/expected17
-rw-r--r--tests/remap/fail/body-py/sim.var119
-rw-r--r--tests/remap/fail/body-py/subs.py5
-rw-r--r--tests/remap/fail/body-py/test.ini10
-rw-r--r--tests/remap/fail/body-py/test.ngc4
-rwxr-xr-xtests/remap/fail/body-py/test.sh4
-rw-r--r--tests/remap/fail/body-py/test.var119
-rw-r--r--tests/remap/fail/epilog/README3
-rw-r--r--tests/remap/fail/epilog/expected19
-rw-r--r--tests/remap/fail/epilog/mustbecalled.ngc4
-rw-r--r--tests/remap/fail/epilog/sim.var119
-rw-r--r--tests/remap/fail/epilog/subs.py6
-rw-r--r--tests/remap/fail/epilog/test.ini10
-rw-r--r--tests/remap/fail/epilog/test.ngc4
-rwxr-xr-xtests/remap/fail/epilog/test.sh4
-rw-r--r--tests/remap/fail/epilog/test.var119
-rw-r--r--tests/remap/fail/prolog/README3
-rw-r--r--tests/remap/fail/prolog/expected17
-rw-r--r--tests/remap/fail/prolog/notcalled.ngc4
-rw-r--r--tests/remap/fail/prolog/sim.var119
-rw-r--r--tests/remap/fail/prolog/subs.py5
-rw-r--r--tests/remap/fail/prolog/test.ini10
-rw-r--r--tests/remap/fail/prolog/test.ngc4
-rwxr-xr-xtests/remap/fail/prolog/test.sh4
-rw-r--r--tests/remap/fail/prolog/test.var119
-rw-r--r--tests/remap/posargs.0/README3
-rw-r--r--tests/remap/posargs.0/expected16
-rw-r--r--tests/remap/posargs.0/rg881.ngc5
-rw-r--r--tests/remap/posargs.0/test.ini8
-rw-r--r--tests/remap/posargs.0/test.ngc7
-rwxr-xr-xtests/remap/posargs.0/test.sh3
44 files changed, 986 insertions, 0 deletions
diff --git a/tests/remap/fail/args.0/README b/tests/remap/fail/args.0/README
new file mode 100644
index 000000000..51718c22e
--- /dev/null
+++ b/tests/remap/fail/args.0/README
@@ -0,0 +1 @@
+Exercise parameter passing to user-defined code
diff --git a/tests/remap/fail/args.0/expected b/tests/remap/fail/args.0/expected
new file mode 100644
index 000000000..1e4bd0560
--- /dev/null
+++ b/tests/remap/fail/args.0/expected
@@ -0,0 +1,15 @@
+ N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
+ N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ N..... SET_XY_ROTATION(0.0000)
+ N..... SET_FEED_REFERENCE(CANON_XYZ)
+ N..... MESSAGE(" M400 call_level= 1.000000 remap_level=1.000000")
+ N..... MESSAGE(" P word set: 47.110000")
+ N..... MESSAGE(" Q word set: 8.150000")
+ N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ N..... SET_XY_ROTATION(0.0000)
+ N..... SET_FEED_MODE(0)
+ N..... SET_FEED_RATE(0.0000)
+ N..... STOP_SPINDLE_TURNING()
+ N..... SET_SPINDLE_MODE(0.0000)
+ N..... PROGRAM_END()
diff --git a/tests/remap/fail/args.0/rm400.ngc b/tests/remap/fail/args.0/rm400.ngc
new file mode 100644
index 000000000..a1186c245
--- /dev/null
+++ b/tests/remap/fail/args.0/rm400.ngc
@@ -0,0 +1,18 @@
+o<rm400> sub
+(debug, M400 call_level= #<_call_level> remap_level=#<_remap_level>)
+
+o100 if [EXISTS[#<P>]]
+ (debug, P word set: #<P>)
+o100 else
+ (debug, P word missing)
+o100 endif
+
+o120 if [EXISTS[#<Q>]]
+ (debug, Q word set: #<Q>)
+o120 else
+ (debug, Q word missing)
+o120 endif
+
+o<rm400> endsub
+m2
+%
diff --git a/tests/remap/fail/args.0/test.ini b/tests/remap/fail/args.0/test.ini
new file mode 100644
index 000000000..094a2623f
--- /dev/null
+++ b/tests/remap/fail/args.0/test.ini
@@ -0,0 +1,9 @@
+[EMC]
+DEBUG=0
+LOG_LEVEL=0
+
+[RS274NGC]
+SUBROUTINE_PATH = .
+
+# M405 requires P- Q- and does NOT permit any other words in this block
+REMAP=M400 modalgroup=5 argspec=PQ ngc=rm400
diff --git a/tests/remap/fail/args.0/test.ngc b/tests/remap/fail/args.0/test.ngc
new file mode 100644
index 000000000..e44e5b100
--- /dev/null
+++ b/tests/remap/fail/args.0/test.ngc
@@ -0,0 +1,2 @@
+M400 P47.11 Q8.15
+M2
diff --git a/tests/remap/fail/args.0/test.sh b/tests/remap/fail/args.0/test.sh
new file mode 100755
index 000000000..65d4d349d
--- /dev/null
+++ b/tests/remap/fail/args.0/test.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+rs274 -i test.ini -g test.ngc | awk '{$1=""; print}'
+exit ${PIPESTATUS[0]}
diff --git a/tests/remap/fail/args.2/README b/tests/remap/fail/args.2/README
new file mode 100644
index 000000000..a4da54744
--- /dev/null
+++ b/tests/remap/fail/args.2/README
@@ -0,0 +1,3 @@
+Exercise failed parameter passing to user-defined code
+
+The required Q parameter is missing
diff --git a/tests/remap/fail/args.2/expected b/tests/remap/fail/args.2/expected
new file mode 100644
index 000000000..ebbe1e3f8
--- /dev/null
+++ b/tests/remap/fail/args.2/expected
@@ -0,0 +1,15 @@
+executing
+user-defined M400: missing: P,Q
+M400 R122.25
+ 1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
+ 2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 4 N..... SET_XY_ROTATION(0.0000)
+ 5 N..... SET_FEED_REFERENCE(CANON_XYZ)
+ 6 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 7 N..... SET_XY_ROTATION(0.0000)
+ 8 N..... SET_FEED_MODE(0)
+ 9 N..... SET_FEED_RATE(0.0000)
+ 10 N..... STOP_SPINDLE_TURNING()
+ 11 N..... SET_SPINDLE_MODE(0.0000)
+ 12 N..... PROGRAM_END()
diff --git a/tests/remap/fail/args.2/rm400.ngc b/tests/remap/fail/args.2/rm400.ngc
new file mode 100644
index 000000000..a1186c245
--- /dev/null
+++ b/tests/remap/fail/args.2/rm400.ngc
@@ -0,0 +1,18 @@
+o<rm400> sub
+(debug, M400 call_level= #<_call_level> remap_level=#<_remap_level>)
+
+o100 if [EXISTS[#<P>]]
+ (debug, P word set: #<P>)
+o100 else
+ (debug, P word missing)
+o100 endif
+
+o120 if [EXISTS[#<Q>]]
+ (debug, Q word set: #<Q>)
+o120 else
+ (debug, Q word missing)
+o120 endif
+
+o<rm400> endsub
+m2
+%
diff --git a/tests/remap/fail/args.2/test.ini b/tests/remap/fail/args.2/test.ini
index 094a2623f..ecd049d5e 100644
--- a/tests/remap/fail/args.2/test.ini
+++ b/tests/remap/fail/args.2/test.ini
@@ -7,3 +7,4 @@ SUBROUTINE_PATH = .
# M405 requires P- Q- and does NOT permit any other words in this block
REMAP=M400 modalgroup=5 argspec=PQ ngc=rm400
+-
diff --git a/tests/remap/fail/args.2/test.ngc b/tests/remap/fail/args.2/test.ngc
new file mode 100644
index 000000000..f1627afa2
--- /dev/null
+++ b/tests/remap/fail/args.2/test.ngc
@@ -0,0 +1,2 @@
+M400 R122.25
+M2
diff --git a/tests/remap/fail/args.2/test.sh b/tests/remap/fail/args.2/test.sh
new file mode 100755
index 000000000..77a112a15
--- /dev/null
+++ b/tests/remap/fail/args.2/test.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+rs274 -i test.ini -n 0 -g test.ngc 2>&1
+exit ${PIPESTATUS[0]}
diff --git a/tests/remap/fail/body-py/README b/tests/remap/fail/body-py/README
new file mode 100644
index 000000000..041c6b194
--- /dev/null
+++ b/tests/remap/fail/body-py/README
@@ -0,0 +1,3 @@
+Exercise failed remap NGC procedure
+
+must properly return to top level, convey error text
diff --git a/tests/remap/fail/body-py/expected b/tests/remap/fail/body-py/expected
new file mode 100644
index 000000000..307ab3c45
--- /dev/null
+++ b/tests/remap/fail/body-py/expected
@@ -0,0 +1,17 @@
+executing
+A failed Python remap handler returning INTERP_ERROR
+O <interp_error> call
+ 1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
+ 2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 4 N..... SET_XY_ROTATION(0.0000)
+ 5 N..... SET_FEED_REFERENCE(CANON_XYZ)
+ 6 N..... MESSAGE(" before M400: call_level= 0.000000 remap_level=0.000000")
+ 7 N..... MESSAGE(" after failed M400: call_level= 0.000000 remap_level=0.000000")
+ 8 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 9 N..... SET_XY_ROTATION(0.0000)
+ 10 N..... SET_FEED_MODE(0)
+ 11 N..... SET_FEED_RATE(0.0000)
+ 12 N..... STOP_SPINDLE_TURNING()
+ 13 N..... SET_SPINDLE_MODE(0.0000)
+ 14 N..... PROGRAM_END()
diff --git a/tests/remap/fail/body-py/sim.var b/tests/remap/fail/body-py/sim.var
new file mode 100644
index 000000000..177637776
--- /dev/null
+++ b/tests/remap/fail/body-py/sim.var
@@ -0,0 +1,119 @@
+5161 0.000000
+5162 0.000000
+5163 0.000000
+5164 0.000000
+5165 0.000000
+5166 0.000000
+5167 0.000000
+5168 0.000000
+5169 0.000000
+5181 0.000000
+5182 0.000000
+5183 0.000000
+5184 0.000000
+5185 0.000000
+5186 0.000000
+5187 0.000000
+5188 0.000000
+5189 0.000000
+5210 0.000000
+5211 0.000000
+5212 0.000000
+5213 0.000000
+5214 0.000000
+5215 0.000000
+5216 0.000000
+5217 0.000000
+5218 0.000000
+5219 0.000000
+5220 1.000000
+5221 0.000000
+5222 0.000000
+5223 0.000000
+5224 0.000000
+5225 0.000000
+5226 0.000000
+5227 0.000000
+5228 0.000000
+5229 0.000000
+5230 0.000000
+5241 0.000000
+5242 0.000000
+5243 0.000000
+5244 0.000000
+5245 0.000000
+5246 0.000000
+5247 0.000000
+5248 0.000000
+5249 0.000000
+5250 0.000000
+5261 0.000000
+5262 0.000000
+5263 0.000000
+5264 0.000000
+5265 0.000000
+5266 0.000000
+5267 0.000000
+5268 0.000000
+5269 0.000000
+5270 0.000000
+5281 0.000000
+5282 0.000000
+5283 0.000000
+5284 0.000000
+5285 0.000000
+5286 0.000000
+5287 0.000000
+5288 0.000000
+5289 0.000000
+5290 0.000000
+5301 0.000000
+5302 0.000000
+5303 0.000000
+5304 0.000000
+5305 0.000000
+5306 0.000000
+5307 0.000000
+5308 0.000000
+5309 0.000000
+5310 0.000000
+5321 0.000000
+5322 0.000000
+5323 0.000000
+5324 0.000000
+5325 0.000000
+5326 0.000000
+5327 0.000000
+5328 0.000000
+5329 0.000000
+5330 0.000000
+5341 0.000000
+5342 0.000000
+5343 0.000000
+5344 0.000000
+5345 0.000000
+5346 0.000000
+5347 0.000000
+5348 0.000000
+5349 0.000000
+5350 0.000000
+5361 0.000000
+5362 0.000000
+5363 0.000000
+5364 0.000000
+5365 0.000000
+5366 0.000000
+5367 0.000000
+5368 0.000000
+5369 0.000000
+5370 0.000000
+5381 0.000000
+5382 0.000000
+5383 0.000000
+5384 0.000000
+5385 0.000000
+5386 0.000000
+5387 0.000000
+5388 0.000000
+5389 0.000000
+5390 0.000000
diff --git a/tests/remap/fail/body-py/subs.py b/tests/remap/fail/body-py/subs.py
new file mode 100644
index 000000000..58952147b
--- /dev/null
+++ b/tests/remap/fail/body-py/subs.py
@@ -0,0 +1,5 @@
+from InterpMod import *
+
+def interp_error(userdata, **words):
+ interp.set_errormsg("A failed Python remap handler returning INTERP_ERROR")
+ return (INTERP_ERROR,)
diff --git a/tests/remap/fail/body-py/test.ini b/tests/remap/fail/body-py/test.ini
new file mode 100644
index 000000000..643776b36
--- /dev/null
+++ b/tests/remap/fail/body-py/test.ini
@@ -0,0 +1,10 @@
+[EMC]
+DEBUG=0
+LOG_LEVEL=0
+
+[RS274NGC]
+PARAMETER_FILE = sim.var
+SUBROUTINE_PATH = .
+PYMODULE=subs.py
+
+REMAP=M400 modalgroup=5 py=interp_error
diff --git a/tests/remap/fail/body-py/test.ngc b/tests/remap/fail/body-py/test.ngc
new file mode 100644
index 000000000..138d7f4fb
--- /dev/null
+++ b/tests/remap/fail/body-py/test.ngc
@@ -0,0 +1,4 @@
+(debug, before M400: call_level= #<_call_level> remap_level=#<_remap_level>)
+M400
+(debug, after failed M400: call_level= #<_call_level> remap_level=#<_remap_level>)
+M2
diff --git a/tests/remap/fail/body-py/test.sh b/tests/remap/fail/body-py/test.sh
new file mode 100755
index 000000000..21572aa5d
--- /dev/null
+++ b/tests/remap/fail/body-py/test.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+rs274 -v test.var -i test.ini -n 0 -g test.ngc 2>&1
+#rs274 -v test.var -n 0 -i test.ini -g test.ngc | awk '{$1=""; print}'
+exit ${PIPESTATUS[0]}
diff --git a/tests/remap/fail/body-py/test.var b/tests/remap/fail/body-py/test.var
new file mode 100644
index 000000000..177637776
--- /dev/null
+++ b/tests/remap/fail/body-py/test.var
@@ -0,0 +1,119 @@
+5161 0.000000
+5162 0.000000
+5163 0.000000
+5164 0.000000
+5165 0.000000
+5166 0.000000
+5167 0.000000
+5168 0.000000
+5169 0.000000
+5181 0.000000
+5182 0.000000
+5183 0.000000
+5184 0.000000
+5185 0.000000
+5186 0.000000
+5187 0.000000
+5188 0.000000
+5189 0.000000
+5210 0.000000
+5211 0.000000
+5212 0.000000
+5213 0.000000
+5214 0.000000
+5215 0.000000
+5216 0.000000
+5217 0.000000
+5218 0.000000
+5219 0.000000
+5220 1.000000
+5221 0.000000
+5222 0.000000
+5223 0.000000
+5224 0.000000
+5225 0.000000
+5226 0.000000
+5227 0.000000
+5228 0.000000
+5229 0.000000
+5230 0.000000
+5241 0.000000
+5242 0.000000
+5243 0.000000
+5244 0.000000
+5245 0.000000
+5246 0.000000
+5247 0.000000
+5248 0.000000
+5249 0.000000
+5250 0.000000
+5261 0.000000
+5262 0.000000
+5263 0.000000
+5264 0.000000
+5265 0.000000
+5266 0.000000
+5267 0.000000
+5268 0.000000
+5269 0.000000
+5270 0.000000
+5281 0.000000
+5282 0.000000
+5283 0.000000
+5284 0.000000
+5285 0.000000
+5286 0.000000
+5287 0.000000
+5288 0.000000
+5289 0.000000
+5290 0.000000
+5301 0.000000
+5302 0.000000
+5303 0.000000
+5304 0.000000
+5305 0.000000
+5306 0.000000
+5307 0.000000
+5308 0.000000
+5309 0.000000
+5310 0.000000
+5321 0.000000
+5322 0.000000
+5323 0.000000
+5324 0.000000
+5325 0.000000
+5326 0.000000
+5327 0.000000
+5328 0.000000
+5329 0.000000
+5330 0.000000
+5341 0.000000
+5342 0.000000
+5343 0.000000
+5344 0.000000
+5345 0.000000
+5346 0.000000
+5347 0.000000
+5348 0.000000
+5349 0.000000
+5350 0.000000
+5361 0.000000
+5362 0.000000
+5363 0.000000
+5364 0.000000
+5365 0.000000
+5366 0.000000
+5367 0.000000
+5368 0.000000
+5369 0.000000
+5370 0.000000
+5381 0.000000
+5382 0.000000
+5383 0.000000
+5384 0.000000
+5385 0.000000
+5386 0.000000
+5387 0.000000
+5388 0.000000
+5389 0.000000
+5390 0.000000
diff --git a/tests/remap/fail/epilog/README b/tests/remap/fail/epilog/README
new file mode 100644
index 000000000..d119a9b8e
--- /dev/null
+++ b/tests/remap/fail/epilog/README
@@ -0,0 +1,3 @@
+Exercise failed prolog for a remap NGC procedure
+
+must properly return to top level, convey error text
diff --git a/tests/remap/fail/epilog/expected b/tests/remap/fail/epilog/expected
new file mode 100644
index 000000000..cd57b6acb
--- /dev/null
+++ b/tests/remap/fail/epilog/expected
@@ -0,0 +1,19 @@
+executing
+A failed Python epilog returning INTERP_ERROR
+o<mustbecalled>endsub
+ 1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
+ 2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 4 N..... SET_XY_ROTATION(0.0000)
+ 5 N..... SET_FEED_REFERENCE(CANON_XYZ)
+ 6 N..... MESSAGE(" before M400: call_level= 0.000000 remap_level=0.000000")
+ 7 N..... MESSAGE(" I should complain if I were'nt called but I guess I cant do that")
+ 8 N..... MESSAGE("failing_epilog returning INTERP_ERROR")
+ 9 N..... MESSAGE(" after failed M400: call_level= 0.000000 remap_level=0.000000")
+ 10 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 11 N..... SET_XY_ROTATION(0.0000)
+ 12 N..... SET_FEED_MODE(0)
+ 13 N..... SET_FEED_RATE(0.0000)
+ 14 N..... STOP_SPINDLE_TURNING()
+ 15 N..... SET_SPINDLE_MODE(0.0000)
+ 16 N..... PROGRAM_END()
diff --git a/tests/remap/fail/epilog/mustbecalled.ngc b/tests/remap/fail/epilog/mustbecalled.ngc
new file mode 100644
index 000000000..dbb6e810a
--- /dev/null
+++ b/tests/remap/fail/epilog/mustbecalled.ngc
@@ -0,0 +1,4 @@
+o<mustbecalled>sub
+(debug, I should complain if I were'nt called but I guess I cant do that)
+o<mustbecalled>endsub
+m2
diff --git a/tests/remap/fail/epilog/sim.var b/tests/remap/fail/epilog/sim.var
new file mode 100644
index 000000000..177637776
--- /dev/null
+++ b/tests/remap/fail/epilog/sim.var
@@ -0,0 +1,119 @@
+5161 0.000000
+5162 0.000000
+5163 0.000000
+5164 0.000000
+5165 0.000000
+5166 0.000000
+5167 0.000000
+5168 0.000000
+5169 0.000000
+5181 0.000000
+5182 0.000000
+5183 0.000000
+5184 0.000000
+5185 0.000000
+5186 0.000000
+5187 0.000000
+5188 0.000000
+5189 0.000000
+5210 0.000000
+5211 0.000000
+5212 0.000000
+5213 0.000000
+5214 0.000000
+5215 0.000000
+5216 0.000000
+5217 0.000000
+5218 0.000000
+5219 0.000000
+5220 1.000000
+5221 0.000000
+5222 0.000000
+5223 0.000000
+5224 0.000000
+5225 0.000000
+5226 0.000000
+5227 0.000000
+5228 0.000000
+5229 0.000000
+5230 0.000000
+5241 0.000000
+5242 0.000000
+5243 0.000000
+5244 0.000000
+5245 0.000000
+5246 0.000000
+5247 0.000000
+5248 0.000000
+5249 0.000000
+5250 0.000000
+5261 0.000000
+5262 0.000000
+5263 0.000000
+5264 0.000000
+5265 0.000000
+5266 0.000000
+5267 0.000000
+5268 0.000000
+5269 0.000000
+5270 0.000000
+5281 0.000000
+5282 0.000000
+5283 0.000000
+5284 0.000000
+5285 0.000000
+5286 0.000000
+5287 0.000000
+5288 0.000000
+5289 0.000000
+5290 0.000000
+5301 0.000000
+5302 0.000000
+5303 0.000000
+5304 0.000000
+5305 0.000000
+5306 0.000000
+5307 0.000000
+5308 0.000000
+5309 0.000000
+5310 0.000000
+5321 0.000000
+5322 0.000000
+5323 0.000000
+5324 0.000000
+5325 0.000000
+5326 0.000000
+5327 0.000000
+5328 0.000000
+5329 0.000000
+5330 0.000000
+5341 0.000000
+5342 0.000000
+5343 0.000000
+5344 0.000000
+5345 0.000000
+5346 0.000000
+5347 0.000000
+5348 0.000000
+5349 0.000000
+5350 0.000000
+5361 0.000000
+5362 0.000000
+5363 0.000000
+5364 0.000000
+5365 0.000000
+5366 0.000000
+5367 0.000000
+5368 0.000000
+5369 0.000000
+5370 0.000000
+5381 0.000000
+5382 0.000000
+5383 0.000000
+5384 0.000000
+5385 0.000000
+5386 0.000000
+5387 0.000000
+5388 0.000000
+5389 0.000000
+5390 0.000000
diff --git a/tests/remap/fail/epilog/subs.py b/tests/remap/fail/epilog/subs.py
new file mode 100644
index 000000000..44b388e59
--- /dev/null
+++ b/tests/remap/fail/epilog/subs.py
@@ -0,0 +1,6 @@
+from InterpMod import *
+
+def failingepilog(userdata, **words):
+ CanonMod.MESSAGE("failing_epilog returning INTERP_ERROR")
+ interp.set_errormsg("A failed Python epilog returning INTERP_ERROR")
+ return (INTERP_ERROR,)
diff --git a/tests/remap/fail/epilog/test.ini b/tests/remap/fail/epilog/test.ini
new file mode 100644
index 000000000..2fccb288e
--- /dev/null
+++ b/tests/remap/fail/epilog/test.ini
@@ -0,0 +1,10 @@
+[EMC]
+DEBUG=0
+LOG_LEVEL=0
+
+[RS274NGC]
+PARAMETER_FILE = sim.var
+SUBROUTINE_PATH = .
+PYMODULE=subs.py
+
+REMAP=M400 modalgroup=5 ngc=mustbecalled epilog=failingepilog
diff --git a/tests/remap/fail/epilog/test.ngc b/tests/remap/fail/epilog/test.ngc
new file mode 100644
index 000000000..138d7f4fb
--- /dev/null
+++ b/tests/remap/fail/epilog/test.ngc
@@ -0,0 +1,4 @@
+(debug, before M400: call_level= #<_call_level> remap_level=#<_remap_level>)
+M400
+(debug, after failed M400: call_level= #<_call_level> remap_level=#<_remap_level>)
+M2
diff --git a/tests/remap/fail/epilog/test.sh b/tests/remap/fail/epilog/test.sh
new file mode 100755
index 000000000..21572aa5d
--- /dev/null
+++ b/tests/remap/fail/epilog/test.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+rs274 -v test.var -i test.ini -n 0 -g test.ngc 2>&1
+#rs274 -v test.var -n 0 -i test.ini -g test.ngc | awk '{$1=""; print}'
+exit ${PIPESTATUS[0]}
diff --git a/tests/remap/fail/epilog/test.var b/tests/remap/fail/epilog/test.var
new file mode 100644
index 000000000..177637776
--- /dev/null
+++ b/tests/remap/fail/epilog/test.var
@@ -0,0 +1,119 @@
+5161 0.000000
+5162 0.000000
+5163 0.000000
+5164 0.000000
+5165 0.000000
+5166 0.000000
+5167 0.000000
+5168 0.000000
+5169 0.000000
+5181 0.000000
+5182 0.000000
+5183 0.000000
+5184 0.000000
+5185 0.000000
+5186 0.000000
+5187 0.000000
+5188 0.000000
+5189 0.000000
+5210 0.000000
+5211 0.000000
+5212 0.000000
+5213 0.000000
+5214 0.000000
+5215 0.000000
+5216 0.000000
+5217 0.000000
+5218 0.000000
+5219 0.000000
+5220 1.000000
+5221 0.000000
+5222 0.000000
+5223 0.000000
+5224 0.000000
+5225 0.000000
+5226 0.000000
+5227 0.000000
+5228 0.000000
+5229 0.000000
+5230 0.000000
+5241 0.000000
+5242 0.000000
+5243 0.000000
+5244 0.000000
+5245 0.000000
+5246 0.000000
+5247 0.000000
+5248 0.000000
+5249 0.000000
+5250 0.000000
+5261 0.000000
+5262 0.000000
+5263 0.000000
+5264 0.000000
+5265 0.000000
+5266 0.000000
+5267 0.000000
+5268 0.000000
+5269 0.000000
+5270 0.000000
+5281 0.000000
+5282 0.000000
+5283 0.000000
+5284 0.000000
+5285 0.000000
+5286 0.000000
+5287 0.000000
+5288 0.000000
+5289 0.000000
+5290 0.000000
+5301 0.000000
+5302 0.000000
+5303 0.000000
+5304 0.000000
+5305 0.000000
+5306 0.000000
+5307 0.000000
+5308 0.000000
+5309 0.000000
+5310 0.000000
+5321 0.000000
+5322 0.000000
+5323 0.000000
+5324 0.000000
+5325 0.000000
+5326 0.000000
+5327 0.000000
+5328 0.000000
+5329 0.000000
+5330 0.000000
+5341 0.000000
+5342 0.000000
+5343 0.000000
+5344 0.000000
+5345 0.000000
+5346 0.000000
+5347 0.000000
+5348 0.000000
+5349 0.000000
+5350 0.000000
+5361 0.000000
+5362 0.000000
+5363 0.000000
+5364 0.000000
+5365 0.000000
+5366 0.000000
+5367 0.000000
+5368 0.000000
+5369 0.000000
+5370 0.000000
+5381 0.000000
+5382 0.000000
+5383 0.000000
+5384 0.000000
+5385 0.000000
+5386 0.000000
+5387 0.000000
+5388 0.000000
+5389 0.000000
+5390 0.000000
diff --git a/tests/remap/fail/prolog/README b/tests/remap/fail/prolog/README
new file mode 100644
index 000000000..d119a9b8e
--- /dev/null
+++ b/tests/remap/fail/prolog/README
@@ -0,0 +1,3 @@
+Exercise failed prolog for a remap NGC procedure
+
+must properly return to top level, convey error text
diff --git a/tests/remap/fail/prolog/expected b/tests/remap/fail/prolog/expected
new file mode 100644
index 000000000..e482fd9cd
--- /dev/null
+++ b/tests/remap/fail/prolog/expected
@@ -0,0 +1,17 @@
+executing
+A failed Python prolog returning INTERP_ERROR
+O <notcalled> call
+ 1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
+ 2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 4 N..... SET_XY_ROTATION(0.0000)
+ 5 N..... SET_FEED_REFERENCE(CANON_XYZ)
+ 6 N..... MESSAGE(" before M400: call_level= 0.000000 remap_level=0.000000")
+ 7 N..... MESSAGE(" after failed M400: call_level= 0.000000 remap_level=0.000000")
+ 8 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ 9 N..... SET_XY_ROTATION(0.0000)
+ 10 N..... SET_FEED_MODE(0)
+ 11 N..... SET_FEED_RATE(0.0000)
+ 12 N..... STOP_SPINDLE_TURNING()
+ 13 N..... SET_SPINDLE_MODE(0.0000)
+ 14 N..... PROGRAM_END()
diff --git a/tests/remap/fail/prolog/notcalled.ngc b/tests/remap/fail/prolog/notcalled.ngc
new file mode 100644
index 000000000..347d09410
--- /dev/null
+++ b/tests/remap/fail/prolog/notcalled.ngc
@@ -0,0 +1,4 @@
+o<notcalled>sub
+(debug, I guess I shouldnt have been called)
+o<notcalled>endsub
+m2
diff --git a/tests/remap/fail/prolog/sim.var b/tests/remap/fail/prolog/sim.var
new file mode 100644
index 000000000..177637776
--- /dev/null
+++ b/tests/remap/fail/prolog/sim.var
@@ -0,0 +1,119 @@
+5161 0.000000
+5162 0.000000
+5163 0.000000
+5164 0.000000
+5165 0.000000
+5166 0.000000
+5167 0.000000
+5168 0.000000
+5169 0.000000
+5181 0.000000
+5182 0.000000
+5183 0.000000
+5184 0.000000
+5185 0.000000
+5186 0.000000
+5187 0.000000
+5188 0.000000
+5189 0.000000
+5210 0.000000
+5211 0.000000
+5212 0.000000
+5213 0.000000
+5214 0.000000
+5215 0.000000
+5216 0.000000
+5217 0.000000
+5218 0.000000
+5219 0.000000
+5220 1.000000
+5221 0.000000
+5222 0.000000
+5223 0.000000
+5224 0.000000
+5225 0.000000
+5226 0.000000
+5227 0.000000
+5228 0.000000
+5229 0.000000
+5230 0.000000
+5241 0.000000
+5242 0.000000
+5243 0.000000
+5244 0.000000
+5245 0.000000
+5246 0.000000
+5247 0.000000
+5248 0.000000
+5249 0.000000
+5250 0.000000
+5261 0.000000
+5262 0.000000
+5263 0.000000
+5264 0.000000
+5265 0.000000
+5266 0.000000
+5267 0.000000
+5268 0.000000
+5269 0.000000
+5270 0.000000
+5281 0.000000
+5282 0.000000
+5283 0.000000
+5284 0.000000
+5285 0.000000
+5286 0.000000
+5287 0.000000
+5288 0.000000
+5289 0.000000
+5290 0.000000
+5301 0.000000
+5302 0.000000
+5303 0.000000
+5304 0.000000
+5305 0.000000
+5306 0.000000
+5307 0.000000
+5308 0.000000
+5309 0.000000
+5310 0.000000
+5321 0.000000
+5322 0.000000
+5323 0.000000
+5324 0.000000
+5325 0.000000
+5326 0.000000
+5327 0.000000
+5328 0.000000
+5329 0.000000
+5330 0.000000
+5341 0.000000
+5342 0.000000
+5343 0.000000
+5344 0.000000
+5345 0.000000
+5346 0.000000
+5347 0.000000
+5348 0.000000
+5349 0.000000
+5350 0.000000
+5361 0.000000
+5362 0.000000
+5363 0.000000
+5364 0.000000
+5365 0.000000
+5366 0.000000
+5367 0.000000
+5368 0.000000
+5369 0.000000
+5370 0.000000
+5381 0.000000
+5382 0.000000
+5383 0.000000
+5384 0.000000
+5385 0.000000
+5386 0.000000
+5387 0.000000
+5388 0.000000
+5389 0.000000
+5390 0.000000
diff --git a/tests/remap/fail/prolog/subs.py b/tests/remap/fail/prolog/subs.py
new file mode 100644
index 000000000..d9d93c2d0
--- /dev/null
+++ b/tests/remap/fail/prolog/subs.py
@@ -0,0 +1,5 @@
+from InterpMod import *
+
+def failingprolog(userdata, **words):
+ interp.set_errormsg("A failed Python prolog returning INTERP_ERROR")
+ return (INTERP_ERROR,)
diff --git a/tests/remap/fail/prolog/test.ini b/tests/remap/fail/prolog/test.ini
new file mode 100644
index 000000000..bf569ef9d
--- /dev/null
+++ b/tests/remap/fail/prolog/test.ini
@@ -0,0 +1,10 @@
+[EMC]
+DEBUG=0
+LOG_LEVEL=0
+
+[RS274NGC]
+PARAMETER_FILE = sim.var
+SUBROUTINE_PATH = .
+PYMODULE=subs.py
+
+REMAP=M400 modalgroup=5 prolog=failingprolog ngc=notcalled
diff --git a/tests/remap/fail/prolog/test.ngc b/tests/remap/fail/prolog/test.ngc
new file mode 100644
index 000000000..138d7f4fb
--- /dev/null
+++ b/tests/remap/fail/prolog/test.ngc
@@ -0,0 +1,4 @@
+(debug, before M400: call_level= #<_call_level> remap_level=#<_remap_level>)
+M400
+(debug, after failed M400: call_level= #<_call_level> remap_level=#<_remap_level>)
+M2
diff --git a/tests/remap/fail/prolog/test.sh b/tests/remap/fail/prolog/test.sh
new file mode 100755
index 000000000..21572aa5d
--- /dev/null
+++ b/tests/remap/fail/prolog/test.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+rs274 -v test.var -i test.ini -n 0 -g test.ngc 2>&1
+#rs274 -v test.var -n 0 -i test.ini -g test.ngc | awk '{$1=""; print}'
+exit ${PIPESTATUS[0]}
diff --git a/tests/remap/fail/prolog/test.var b/tests/remap/fail/prolog/test.var
new file mode 100644
index 000000000..177637776
--- /dev/null
+++ b/tests/remap/fail/prolog/test.var
@@ -0,0 +1,119 @@
+5161 0.000000
+5162 0.000000
+5163 0.000000
+5164 0.000000
+5165 0.000000
+5166 0.000000
+5167 0.000000
+5168 0.000000
+5169 0.000000
+5181 0.000000
+5182 0.000000
+5183 0.000000
+5184 0.000000
+5185 0.000000
+5186 0.000000
+5187 0.000000
+5188 0.000000
+5189 0.000000
+5210 0.000000
+5211 0.000000
+5212 0.000000
+5213 0.000000
+5214 0.000000
+5215 0.000000
+5216 0.000000
+5217 0.000000
+5218 0.000000
+5219 0.000000
+5220 1.000000
+5221 0.000000
+5222 0.000000
+5223 0.000000
+5224 0.000000
+5225 0.000000
+5226 0.000000
+5227 0.000000
+5228 0.000000
+5229 0.000000
+5230 0.000000
+5241 0.000000
+5242 0.000000
+5243 0.000000
+5244 0.000000
+5245 0.000000
+5246 0.000000
+5247 0.000000
+5248 0.000000
+5249 0.000000
+5250 0.000000
+5261 0.000000
+5262 0.000000
+5263 0.000000
+5264 0.000000
+5265 0.000000
+5266 0.000000
+5267 0.000000
+5268 0.000000
+5269 0.000000
+5270 0.000000
+5281 0.000000
+5282 0.000000
+5283 0.000000
+5284 0.000000
+5285 0.000000
+5286 0.000000
+5287 0.000000
+5288 0.000000
+5289 0.000000
+5290 0.000000
+5301 0.000000
+5302 0.000000
+5303 0.000000
+5304 0.000000
+5305 0.000000
+5306 0.000000
+5307 0.000000
+5308 0.000000
+5309 0.000000
+5310 0.000000
+5321 0.000000
+5322 0.000000
+5323 0.000000
+5324 0.000000
+5325 0.000000
+5326 0.000000
+5327 0.000000
+5328 0.000000
+5329 0.000000
+5330 0.000000
+5341 0.000000
+5342 0.000000
+5343 0.000000
+5344 0.000000
+5345 0.000000
+5346 0.000000
+5347 0.000000
+5348 0.000000
+5349 0.000000
+5350 0.000000
+5361 0.000000
+5362 0.000000
+5363 0.000000
+5364 0.000000
+5365 0.000000
+5366 0.000000
+5367 0.000000
+5368 0.000000
+5369 0.000000
+5370 0.000000
+5381 0.000000
+5382 0.000000
+5383 0.000000
+5384 0.000000
+5385 0.000000
+5386 0.000000
+5387 0.000000
+5388 0.000000
+5389 0.000000
+5390 0.000000
diff --git a/tests/remap/posargs.0/README b/tests/remap/posargs.0/README
new file mode 100644
index 000000000..eca431208
--- /dev/null
+++ b/tests/remap/posargs.0/README
@@ -0,0 +1,3 @@
+Exercise passing positional parameters to an NGC remap procedure
+
+Verify ordering and argument count
diff --git a/tests/remap/posargs.0/expected b/tests/remap/posargs.0/expected
new file mode 100644
index 000000000..ebbc2ceb2
--- /dev/null
+++ b/tests/remap/posargs.0/expected
@@ -0,0 +1,16 @@
+ N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
+ N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ N..... SET_XY_ROTATION(0.0000)
+ N..... SET_FEED_REFERENCE(CANON_XYZ)
+ N..... MESSAGE(" in rg881: n_args=3.000000 [1.000000] [2.000000] [3.000000] [0.000000] [0.000000]")
+ N..... MESSAGE(" in rg881: n_args=4.000000 [1.000000] [2.000000] [3.000000] [4.000000] [0.000000]")
+ N..... MESSAGE(" in rg881: n_args=4.000000 [1.000000] [2.000000] [3.000000] [5.000000] [0.000000]")
+ N..... MESSAGE(" in rg881: n_args=5.000000 [1.000000] [2.000000] [3.000000] [4.000000] [5.000000]")
+ N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
+ N..... SET_XY_ROTATION(0.0000)
+ N..... SET_FEED_MODE(0)
+ N..... SET_FEED_RATE(0.0000)
+ N..... STOP_SPINDLE_TURNING()
+ N..... SET_SPINDLE_MODE(0.0000)
+ N..... PROGRAM_END()
diff --git a/tests/remap/posargs.0/rg881.ngc b/tests/remap/posargs.0/rg881.ngc
new file mode 100644
index 000000000..e19cb153e
--- /dev/null
+++ b/tests/remap/posargs.0/rg881.ngc
@@ -0,0 +1,5 @@
+o<rg881> sub
+(debug, in rg881: n_args=#<n_args> [#1] [#2] [#3] [#4] [#5])
+o<rg881> endsub
+m2
+%
diff --git a/tests/remap/posargs.0/test.ini b/tests/remap/posargs.0/test.ini
new file mode 100644
index 000000000..97b4d518d
--- /dev/null
+++ b/tests/remap/posargs.0/test.ini
@@ -0,0 +1,8 @@
+[EMC]
+DEBUG=0
+LOG_LEVEL=0
+
+[RS274NGC]
+SUBROUTINE_PATH = .
+
+REMAP=G88.1 modalgroup=1 argspec=@XYZpq ngc=rg881
diff --git a/tests/remap/posargs.0/test.ngc b/tests/remap/posargs.0/test.ngc
new file mode 100644
index 000000000..273ca43c0
--- /dev/null
+++ b/tests/remap/posargs.0/test.ngc
@@ -0,0 +1,7 @@
+G88.1 X1 Y2 Z3
+; NB: with positional argument caling it is impossible to tell which
+; one of several optional parameters was passed!
+G88.1 X1 Y2 Z3 P4
+G88.1 X1 Y2 Z3 Q5
+G88.1 X1 Y2 Z3 P4 Q5
+M2
diff --git a/tests/remap/posargs.0/test.sh b/tests/remap/posargs.0/test.sh
new file mode 100755
index 000000000..087b90d47
--- /dev/null
+++ b/tests/remap/posargs.0/test.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+rs274 -i test.ini -n 0 -g test.ngc| awk '{$1=""; print}'
+exit ${PIPESTATUS[0]}