From e0cf5aca2a17fae1f89860d5106aa901dde32782 Mon Sep 17 00:00:00 2001 From: Zuhaitz Méndez Fernández de Aránguiz Date: Sat, 17 Jan 2026 14:33:23 +0000 Subject: Working on new type of tests (related to codegen). --- tests/codegen/dedup_typedefs.zc | 18 +++++++++++++++ tests/run_codegen_tests.sh | 51 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 tests/codegen/dedup_typedefs.zc create mode 100755 tests/run_codegen_tests.sh (limited to 'tests') 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 -- cgit v1.2.3