summaryrefslogtreecommitdiff
path: root/tests/run_codegen_tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run_codegen_tests.sh')
-rwxr-xr-xtests/run_codegen_tests.sh51
1 files changed, 51 insertions, 0 deletions
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