3.4 KiB
3.4 KiB
Codegen Tests Index
Quick reference guide for all codegen tests.
📋 Test Overview
| Test | Type | Features | Lines |
|---|---|---|---|
test_executable |
Basic | Integer math, functions | 4 |
test_array_simple |
Arrays | Literals, indexing, pointers | 4 |
test_enum_simple |
Enums | Variants, discriminant | 2 |
test_comprehensive |
Mixed | All basic types, structs | 18 |
test_all_types |
Coverage | Complete type test | 16 |
🚀 Quick Commands
Generate C from all tests
for f in tests/codegen/*.sui; do
./target/debug/suicmez "$f"
done
Compile all tests
for f in tests/codegen/*.c; do
gcc "$f" -o "/tmp/$(basename ${f%.c})"
done
Run all tests
for exe in /tmp/test_*; do
echo "=== $(basename $exe) ==="
"$exe" 2>&1
done
Run single test
./target/debug/suicmez tests/codegen/test_comprehensive.sui
gcc tests/codegen/test_comprehensive.c -o /tmp/test
/tmp/test
📖 Documentation Files
- README.md - Full documentation of all tests
- TESTING.md - How to run and debug tests
- SUMMARY.md - Organization and cleanup summary
- INDEX.md - This file
🎯 Test Selection Guide
I want to test:
- Simple execution → Use
test_executable - Arrays → Use
test_array_simple - Enums → Use
test_enum_simple - Everything together → Use
test_comprehensive - All types → Use
test_all_types
✅ Verification Checklist
Before pushing:
- All
.suifiles transpile:for f in tests/codegen/*.sui; do suicmez "$f" > /dev/null; done - All
.cfiles compile:for f in tests/codegen/*.c; do gcc "$f" -c; done - All tests execute:
for f in tests/codegen/*.c; do gcc "$f" -o /tmp/t && /tmp/t > /dev/null; done - Debug output works:
gcc tests/codegen/test_comprehensive.c -o /tmp/t && /tmp/t | head -3
🔧 Debug Features
Each test includes debug output:
| <statement> |
<value>
Example:
| int x = 10 |
10
Format specifiers are automatic:
%d- integers%f- floats%s- strings%p- pointers
📦 File Organization
tests/codegen/
├── test_executable.sui ← Source
├── test_executable.c ← Generated
├── test_array_simple.sui
├── test_array_simple.c
├── test_enum_simple.sui
├── test_enum_simple.c
├── test_comprehensive.sui
├── test_comprehensive.c
├── test_all_types.sui
├── test_all_types.c
├── README.md ← Documentation
├── TESTING.md
├── SUMMARY.md
└── INDEX.md ← This file
Each .sui file has a corresponding .c file containing the generated C code with debug output.
🎓 Learning Path
- Start with
test_executable- understand basic code generation - Move to
test_array_simple- learn array handling - Check
test_enum_simple- understand enum codegen - Study
test_comprehensive- see everything together - Review
test_all_types- verify complete coverage
💡 Tips
- Look at generated
.cfiles to understand transpilation - Run tests with output redirection:
./test 2>&1 | less - Compare
.suiand.cfiles side by side - Check debug output for execution trace
- Modify
.suifiles to experiment with codegen
📞 Getting Help
See TESTING.md for:
- Common issues and solutions
- Compilation troubleshooting
- Debug output interpretation
- Verification procedures