aboutsummaryrefslogtreecommitdiff
path: root/tests/icon
diff options
context:
space:
mode:
Diffstat (limited to 'tests/icon')
-rw-r--r--tests/icon/accept/step_globals.expected1
-rw-r--r--tests/icon/accept/step_globals.zc19
-rw-r--r--tests/icon/reject/begin_unknown_function.expected1
-rw-r--r--tests/icon/reject/begin_unknown_function.zc11
4 files changed, 32 insertions, 0 deletions
diff --git a/tests/icon/accept/step_globals.expected b/tests/icon/accept/step_globals.expected
new file mode 100644
index 0000000..8c5e263
--- /dev/null
+++ b/tests/icon/accept/step_globals.expected
@@ -0,0 +1 @@
+5 10 11 11 11 0 2
diff --git a/tests/icon/accept/step_globals.zc b/tests/icon/accept/step_globals.zc
new file mode 100644
index 0000000..c584772
--- /dev/null
+++ b/tests/icon/accept/step_globals.zc
@@ -0,0 +1,19 @@
+include rt;
+include run;
+include icon;
+int total = 1;
+fn main() {
+ // step a fragment that writes an isolated global and a bound one, reading both after each step
+ let q = run.tokens("int n = 5; scale = scale * n; total = total + scale; return total;");
+ let frame = icon.begin(q);
+ icon.set_global(frame, "scale", 2);
+ icon.bind_global(frame, "total");
+ icon.step(frame); rt.put_n(icon.local(frame, "n")); rt.put_c(' ');
+ icon.step(frame); rt.put_n(icon.global(frame, "scale")); rt.put_c(' ');
+ icon.step(frame); rt.put_n(icon.global(frame, "total")); rt.put_c(' '); rt.put_n(total); rt.put_c(' ');
+ icon.step(frame); rt.put_n(icon.result(frame)); rt.put_c(' ');
+ // a name the frame never bound reads as 0 with error status 2
+ rt.put_n(icon.global(frame, "missing")); rt.put_c(' '); rt.put_n(icon.error()); rt.put_c(10);
+ icon.close(d*frame);
+ return 0;
+}
diff --git a/tests/icon/reject/begin_unknown_function.expected b/tests/icon/reject/begin_unknown_function.expected
new file mode 100644
index 0000000..1f338fc
--- /dev/null
+++ b/tests/icon/reject/begin_unknown_function.expected
@@ -0,0 +1 @@
+1 4 0
diff --git a/tests/icon/reject/begin_unknown_function.zc b/tests/icon/reject/begin_unknown_function.zc
new file mode 100644
index 0000000..6a8e5b3
--- /dev/null
+++ b/tests/icon/reject/begin_unknown_function.zc
@@ -0,0 +1,11 @@
+include rt;
+include run;
+include icon;
+fn main() {
+ // an address that is no function has no tokens to step: no frame, error status 4
+ let frame = icon.begin_function(12345);
+ rt.put_n(frame == 0); rt.put_c(' '); rt.put_n(icon.error()); rt.put_c(' ');
+ // stepping or reading a missing frame does nothing
+ rt.put_n(icon.step(0)); rt.put_c(10);
+ return 0;
+}