2.8 KiB
2.8 KiB
Running the Codegen Tests
Quick Start
# Regenerate C code from all tests
for f in tests/codegen/*.sui; do
./target/debug/suicmez "$f"
done
# Compile and run a single test
gcc tests/codegen/test_comprehensive.c -o /tmp/test_comprehensive
/tmp/test_comprehensive
Test Summary
| Test | Purpose | Input | Output |
|---|---|---|---|
test_executable.sui |
Simple arithmetic | Basic int operations | Exit code with result |
test_array_simple.sui |
Array operations | Array literal and indexing | Debug output with array values |
test_enum_simple.sui |
Enum types | Enum variant creation | Discriminant value |
test_comprehensive.sui |
Mixed types | All basic + complex types | Full debug trace |
test_all_types.sui |
Type coverage | Every language type | Debug output for each |
Running Individual Tests
1. Array Test
./target/debug/suicmez tests/codegen/test_array_simple.sui
gcc tests/codegen/test_array_simple.c -o /tmp/array_test
/tmp/array_test
Expected Output:
| int* arr = (int[]){1, 2, 3} |
0x...
| int x = arr[0] |
1
2. Enum Test
./target/debug/suicmez tests/codegen/test_enum_simple.sui
gcc tests/codegen/test_enum_simple.c -o /tmp/enum_test
/tmp/enum_test
Expected Output:
| struct Color c = (struct Color){ .discriminant = 0, .data = { .red = (struct Color_Red){} } } |
0
3. Comprehensive Test
./target/debug/suicmez tests/codegen/test_comprehensive.sui
gcc tests/codegen/test_comprehensive.c -o /tmp/comprehensive_test
/tmp/comprehensive_test
Expected Output: (full debug trace of all operations)
| int x = 10 |
10
| int y = 20 |
20
| int sum = add(x, y) |
30
... (more output)
Debugging the Codegen
Each test's generated C file includes debug printf statements. To see what's happening:
-
Look at the generated C code:
cat tests/codegen/test_comprehensive.c -
Run with debug output:
gcc tests/codegen/test_comprehensive.c -o /tmp/test /tmp/test 2>&1 | head -20 -
Check for compilation errors:
gcc tests/codegen/test_comprehensive.c -c -o /tmp/test.o
Verifying Correctness
All tests should:
- ✅ Generate valid C99 code
- ✅ Compile without warnings
- ✅ Execute without segmentation faults
- ✅ Show proper debug output for each statement
Common Issues
Test fails to compile
- Check that the
.suifile was properly transpiled - Regenerate with:
./target/debug/suicmez tests/codegen/test_name.sui
Debug output missing
- Ensure the printf statements are in the generated C code
- Check for return statements that might skip debug output
Wrong values printed
- The debug output uses automatic format specifiers (
%d,%f,%s,%p) - Struct types print the first field value
- Arrays print the pointer address