diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ptr_arithmetic.toc | 33 | ||||
-rw-r--r-- | tests/ptr_arithmetic_expected | 2 | ||||
-rwxr-xr-x | tests/test.sh | 1 |
3 files changed, 36 insertions, 0 deletions
diff --git a/tests/ptr_arithmetic.toc b/tests/ptr_arithmetic.toc new file mode 100644 index 0000000..05975e8 --- /dev/null +++ b/tests/ptr_arithmetic.toc @@ -0,0 +1,33 @@ +#include "std/io.toc"; +#include "std/mem.toc"; + +ptr_arithmetic_test ::= fn() total := 0 { + foo := news(int, 10); + for p, i := &foo { + *p = i; + } + p := &foo[0]; + + p += 2; + total += *p; + total += *(p + 3); + total += *(p - 1); + + voidp : &void = &foo[7]; + total += *(voidp as &int); + voidp = voidp + 8; + total += *(voidp as &int); + voidp += 8; + total += *(voidp as &int); + voidp = voidp - 8; + total += *(voidp as &int); + voidp -= 8; + total += *(voidp as &int); +} + +main ::= fn() { + x ::= ptr_arithmetic_test(); + y := ptr_arithmetic_test(); + puti(x); + puti(y); +} diff --git a/tests/ptr_arithmetic_expected b/tests/ptr_arithmetic_expected new file mode 100644 index 0000000..930ba1a --- /dev/null +++ b/tests/ptr_arithmetic_expected @@ -0,0 +1,2 @@ +47 +47 diff --git a/tests/test.sh b/tests/test.sh index 75697ef..bf58042 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -4,6 +4,7 @@ tests='bf control_flow types arrs_slices +ptr_arithmetic defer sizeof new |