diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/codegen/dedup_typedefs.zc | 18 | ||||
| -rwxr-xr-x | tests/run_codegen_tests.sh | 51 |
2 files changed, 69 insertions, 0 deletions
diff --git a/tests/codegen/dedup_typedefs.zc b/tests/codegen/dedup_typedefs.zc new file mode 100644 index 0000000..c6e8099 --- /dev/null +++ b/tests/codegen/dedup_typedefs.zc @@ -0,0 +1,18 @@ +struct Vec2f { + x: f32; + y: f32; +} + +struct Node { + val: int; + next: Node*; +} + +fn main() { + var v: Vec2f; + v.x = 1.0; + v.y = 2.0; + + var n: Node; + n.val = 1; +} diff --git a/tests/run_codegen_tests.sh b/tests/run_codegen_tests.sh new file mode 100755 index 0000000..179af52 --- /dev/null +++ b/tests/run_codegen_tests.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# Codegen Verification Test Runner +ZC="./zc" +TEST_DIR="tests/codegen" +PASSED=0 +FAILED=0 + +if [ ! -f "$ZC" ]; then + echo "Error: zc binary not found." + exit 1 +fi + +echo "** Running Codegen Verification Tests **" + +# Test 1: Duplicate Typedefs +TEST_NAME="dedup_typedefs.zc" +echo -n "Testing $TEST_DIR/$TEST_NAME (Duplicate Typedefs)... " + +$ZC "$TEST_DIR/$TEST_NAME" --emit-c > /dev/null 2>&1 +if [ $? -ne 0 ]; then + echo "FAIL (Compilation error)" + ((FAILED++)) +else + # Check out.c for duplicates + # We expect "typedef struct Vec2f Vec2f;" to appear exactly once + COUNT=$(grep -c "typedef struct Vec2f Vec2f;" out.c) + + if [ "$COUNT" -eq 1 ]; then + echo "PASS" + ((PASSED++)) + else + echo "FAIL (Found $COUNT typedefs for Vec2f, expected 1)" + ((FAILED++)) + fi +fi + +# Cleanup +rm -f out.c a.out + +echo "----------------------------------------" +echo "Summary:" +echo "-> Passed: $PASSED" +echo "-> Failed: $FAILED" +echo "----------------------------------------" + +if [ $FAILED -ne 0 ]; then + exit 1 +else + exit 0 +fi |
