GAMEEEEEEEEEE

This commit is contained in:
Masashi 2025-12-17 13:16:53 +05:30
commit e0a42d0262
45 changed files with 2771 additions and 782 deletions

175
tests/codegen/SUMMARY.md Normal file
View file

@ -0,0 +1,175 @@
# Codegen Tests - Summary
## Organization
The codegen tests have been organized into a dedicated `tests/codegen/` subdirectory with the following structure:
```
tests/codegen/
├── README.md # Comprehensive documentation
├── TESTING.md # Testing instructions
├── SUMMARY.md # This file
├── test_executable.* # Simple arithmetic test
├── test_array_simple.* # Array operations test
├── test_enum_simple.* # Enum types test
├── test_comprehensive.* # Mixed types test
└── test_all_types.* # Type coverage test
```
Each test has two files:
- `.sui` - Source code in the suicmez language
- `.c` - Generated C code with debug output
## What Was Cleaned Up
Removed from root directory:
- `simple.sui`, `simple_test.*` - Incomplete test files
- `syntax_test.sui` - Old syntax exploration
- `test_affine.sui`, `test_binding.sui` - Abandoned tests
- `test_linear*.sui` - Linear type system experiments
- `test_scoping.sui`, `test_shadow.sui` - Scoping tests
- Other misc test files
Kept in root (valid existing tests):
- None - all valid tests are now organized in `tests/` subdirectories
## Test Files
### New Codegen Tests (in `tests/codegen/`)
1. **test_executable** - Minimal executable test
- Basic integer operations
- Function calls
- Return values
2. **test_array_simple** - Array functionality
- Array literals: `[1, 2, 3]`
- Array indexing: `arr[0]`
- Pointer-based array representation
3. **test_enum_simple** - Enumeration types
- Enum variants
- Discriminant + union pattern
- Struct ordering
4. **test_comprehensive** - Combined features
- All basic types (int, float, bool, string)
- Structs with multiple fields
- Enums with variants
- Arrays with complex operations
- Function calls with parameters
5. **test_all_types** - Complete type coverage
- Exhaustive test of all language types
- Demonstrates each type independently
- Shows debug output for each
### Existing Tests (preserved in `tests/`)
- `arrays.sui` - Additional array tests
- `basic_types.sui/c` - Basic type tests
- `control_flow.sui/c` - If/while/for loops
- `enums.sui` - Enum functionality
- `functions.sui/c` - Function definitions
- `generics_comprehensive.sui/c` - Generic types
- `import_tests/` - Module imports
- `pointers.sui` - Pointer operations
- `structs.sui/c` - Struct definitions
- `traits.sui/c` - Trait system
- And more...
## Features Demonstrated
### Memory Management
- Stack allocation: `int`, `float`, `bool`
- Heap allocation: arrays with pointers
- Strings as `char*`
- Structs and enums stack-allocated
### Language Features
- Variable declarations and assignments
- Function definitions and calls
- Struct literals with initialization
- Enum variants with discriminants
- Array literals and indexing
- Type conversions (implicit)
### Debug Output
Every statement generates debug output:
```c
int x = 10;
printf("| int x = 10 | \n %d\n", x);
// Output: | int x = 10 |
// 10
```
## Running the Tests
### Quick Check
```bash
cd /home/nafi/langjam/suicmez
for f in tests/codegen/*.sui; do
./target/debug/suicmez "$f" > /dev/null && echo "✓ $(basename $f)"
done
```
### Full Test Run
```bash
# Regenerate all C code
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 "Running $(basename $exe)..."
"$exe" 2>&1 | head -5
echo ""
done
```
### Individual Test
```bash
./target/debug/suicmez tests/codegen/test_comprehensive.sui
gcc tests/codegen/test_comprehensive.c -o /tmp/test
/tmp/test
```
## Quality Assurance
All codegen tests:
- ✅ Generate valid C99 code
- ✅ Compile with GCC without errors
- ✅ Execute successfully
- ✅ Display proper debug output
- ✅ Return correct values
- ✅ Include comprehensive documentation
## Documentation
- **README.md** - Feature overview and structure
- **TESTING.md** - How to run and troubleshoot tests
- **SUMMARY.md** - This file, organization summary
## Next Steps
To add new codegen tests:
1. Create `test_feature.sui` in `tests/codegen/`
2. Run transpiler: `./target/debug/suicmez tests/codegen/test_feature.sui`
3. Verify C code: `gcc tests/codegen/test_feature.c -c`
4. Test execution: `gcc tests/codegen/test_feature.c -o /tmp/test && /tmp/test`
5. Document in README.md
## Files Status
✅ All files properly organized
✅ All tests generate valid C code
✅ All tests compile and run
✅ Documentation complete
✅ Debug output working
✅ Root directory cleaned