summaryrefslogtreecommitdiff
path: root/tests/general/large.icn
diff options
context:
space:
mode:
Diffstat (limited to 'tests/general/large.icn')
-rw-r--r--tests/general/large.icn37
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/general/large.icn b/tests/general/large.icn
new file mode 100644
index 0000000..ed14206
--- /dev/null
+++ b/tests/general/large.icn
@@ -0,0 +1,37 @@
+invocable "+", "-", "*", "/", "%", "iand", "ior", "ixor", "<", "=" , "^"
+invocable "ishift"
+
+procedure main ()
+ if not(&features == "large integers") then
+ stop("large integers not supported")
+
+ big := 111111111111111111111
+ med1 := "2222222222"
+ med2 := "3333333333"
+ small := 4
+
+ every optest ("+" | "-" | "*" | "/" | "%" |"iand"|"ior"|"ixor"|"<"|"=",
+ big | -big | small | -small,
+ big | -big | small | -small)
+ every optest ("+" | "-" | "*" | "/" | "%" |"iand"|"ior"|"ixor"|"<"|"=",
+ big | med1 | -med1,
+ med1 | med2 | -med2)
+
+ every optest ("^", big | -big | small | -small, 2 | 5)
+ every optest ("^", 2 | 3, 10 | 30 )
+ every optest ("ishift", big |-big | med1 | -med1 | small, 1 | 8 | -1 | -39)
+
+ &trace := -1
+ every i := 10 | 30 | 70 | 100 do {
+ write(2 ^ i)
+ write(2 ^ i || ":" || image(2 ^ i))
+ foo(2 ^ i)
+ }
+end
+
+procedure optest (op, a, b)
+ write (a, " ", op, " ", b, " = ", op(a,b)|"none")
+end
+
+procedure foo(x)
+end