# 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 ```bash for f in tests/codegen/*.sui; do ./target/debug/suicmez "$f" done ``` ### Compile all tests ```bash for f in tests/codegen/*.c; do gcc "$f" -o "/tmp/$(basename ${f%.c})" done ``` ### Run all tests ```bash for exe in /tmp/test_*; do echo "=== $(basename $exe) ===" "$exe" 2>&1 done ``` ### Run single test ```bash ./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 `.sui` files transpile: `for f in tests/codegen/*.sui; do suicmez "$f" > /dev/null; done` - [ ] All `.c` files 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: ``` | | ``` 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 1. Start with `test_executable` - understand basic code generation 2. Move to `test_array_simple` - learn array handling 3. Check `test_enum_simple` - understand enum codegen 4. Study `test_comprehensive` - see everything together 5. Review `test_all_types` - verify complete coverage ## 💡 Tips - Look at generated `.c` files to understand transpilation - Run tests with output redirection: `./test 2>&1 | less` - Compare `.sui` and `.c` files side by side - Check debug output for execution trace - Modify `.sui` files to experiment with codegen ## 📞 Getting Help See **TESTING.md** for: - Common issues and solutions - Compilation troubleshooting - Debug output interpretation - Verification procedures