From f9d970a0535ec3ae4aaff6842788a89b139cfdaa Mon Sep 17 00:00:00 2001
From: Leo Tenenbaum <pommicket@gmail.com>
Date: Fri, 1 May 2020 17:48:09 -0400
Subject: made output for void pointer arithmetic standard-compliant

---
 tests/ptr_arithmetic.toc      | 33 +++++++++++++++++++++++++++++++++
 tests/ptr_arithmetic_expected |  2 ++
 tests/test.sh                 |  1 +
 3 files changed, 36 insertions(+)
 create mode 100644 tests/ptr_arithmetic.toc
 create mode 100644 tests/ptr_arithmetic_expected

(limited to 'tests')

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
-- 
cgit v1.2.3