summaryrefslogtreecommitdiff
path: root/tests/general/subjpos.icn
diff options
context:
space:
mode:
Diffstat (limited to 'tests/general/subjpos.icn')
-rw-r--r--tests/general/subjpos.icn82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/general/subjpos.icn b/tests/general/subjpos.icn
new file mode 100644
index 0000000..05e4e81
--- /dev/null
+++ b/tests/general/subjpos.icn
@@ -0,0 +1,82 @@
+#SRC: JCON
+
+procedure main()
+ local i, s, x
+
+ ws() # dump initial state
+ write()
+
+ every setsubj(s := "cat" | "" | "donut" | "x") do
+ every i := -*s-2 to *s+3 do
+ setpos(i)
+ write()
+
+ "outer" ? {
+ ws()
+ &pos := 3
+ ws()
+ "inner" ? {
+ ws()
+ &pos := 2
+ ws()
+ }
+ ws()
+ }
+
+ "123456" ? {
+ &pos := 3
+ x := 4
+ write("&pos=", &pos, " x=", x)
+ &pos :=: x
+ write("&pos=", &pos, " x=", x)
+ &pos := 3
+ x := 9
+ &pos :=: x
+ write("&pos=", &pos, " x=", x)
+ &pos := 3
+ x := 9
+ x :=: &pos
+ write("&pos=", &pos, " x=", x)
+ &pos := 3
+ x := 9
+ every &pos <-> x do write("&pos=", &pos, " x=", x)
+ write("&pos=", &pos, " x=", x)
+ &pos := 3
+ x := 9
+ every x <-> &pos do write("&pos=", &pos, " x=", x)
+ write("&pos=", &pos, " x=", x)
+ &pos := 3
+ x := 2
+ every &pos <-> x do &subject := "A"
+ write("&pos=", &pos, " x=", x)
+ &pos := 3
+ x := 2
+ every x <-> &pos do &subject := "A"
+ write("&pos=", &pos, " x=", x)
+ }
+end
+
+procedure setpos(n)
+ writes("p := ", right(image(n),10))
+ if &pos := n then
+ writes(" ")
+ else
+ writes(" FAILED")
+ ws()
+ return
+end
+
+procedure setsubj(s)
+ writes("s := ", right(image(s),10))
+ if &subject := s then
+ writes(" ")
+ else
+ writes(" FAILED")
+ ws()
+ return
+end
+
+procedure ws() # write state of &setpos and &subject
+ write(" &pos=", image(&pos), " &subject=", image(&subject))
+ return
+end