aboutsummaryrefslogtreecommitdiffstats
path: root/tests/oracle
diff options
context:
space:
mode:
Diffstat (limited to 'tests/oracle')
-rw-r--r--tests/oracle/faults.aup22
-rw-r--r--tests/oracle/faults.pure19
-rw-r--r--tests/oracle/steps.pure23
3 files changed, 64 insertions, 0 deletions
diff --git a/tests/oracle/faults.aup b/tests/oracle/faults.aup
new file mode 100644
index 0000000..cb91f17
--- /dev/null
+++ b/tests/oracle/faults.aup
@@ -0,0 +1,22 @@
+# Each input fails on some presses; a failed event changes nothing.
+state q = 1
+state r = 0
+state s = 5
+input divide = key KeyD
+input grow = key KeyG
+input bound = key KeyB
+view shown = r
+
+on divide.down {
+ r = r + 1
+ q = 10 / (q - 1)
+}
+
+on grow.down {
+ s = s * 1e200
+}
+
+on bound.down {
+ r = r + 1
+ s = clamp(s, r, 3)
+}
diff --git a/tests/oracle/faults.pure b/tests/oracle/faults.pure
new file mode 100644
index 0000000..598c853
--- /dev/null
+++ b/tests/oracle/faults.pure
@@ -0,0 +1,19 @@
+# Each input fails on some presses; a failed event changes nothing.
+state q = 1
+state r = 0
+state s = 5
+input divide = KeyD
+input grow = KeyG
+input bound = KeyB
+text shown(0, 0, r, "r")
+on divide.down {
+ r = r + 1
+ q = 10 / (q - 1)
+}
+on grow.down {
+ s = s * 1e200
+}
+on bound.down {
+ r = r + 1
+ s = clamp(s, r, 3)
+}
diff --git a/tests/oracle/steps.pure b/tests/oracle/steps.pure
new file mode 100644
index 0000000..3c09dbb
--- /dev/null
+++ b/tests/oracle/steps.pure
@@ -0,0 +1,23 @@
+# The workbench has no else; the aup else-if chain is written as exclusive ifs.
+state level = 0
+state band = 0
+input up = ArrowUp
+input down = ArrowDown
+text shown(0, 0, band, "band")
+on up.down {
+ level = level + 1
+}
+on down.down {
+ level = level - 1
+}
+on frame {
+ if level > 2 {
+ band = 2
+ }
+ if level <= 2 && level > 0 {
+ band = 1
+ }
+ if level <= 0 {
+ band = 0
+ }
+}