GAMEEEEEEEEEE
This commit is contained in:
parent
859e7d7560
commit
e0a42d0262
45 changed files with 2771 additions and 782 deletions
175
tests/codegen/SUMMARY.md
Normal file
175
tests/codegen/SUMMARY.md
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue