rabukasim / engine_rust_src /tests /ORGANIZATION.md
trioskosmos's picture
Upload folder using huggingface_hub
463f868 verified
# Test Suite Organization
This directory contains the engine test suite, organized by purpose and scope.
## Directory Structure
### `/qa`
**Purpose**: Official Q&A rule verification tests from the official Love Live Card Game Q&A documentation.
- Tests are sourced from published Q&A documents (Q1-Q300+)
- Each test validates a specific ruling, edge case, or clarification
- Tests are grouped by complexity and rule category
- **Key files**: `batch_1.rs`, `batch_2.rs`, `batch_3.rs`, `batch_4_unmapped_qa.rs`
**Run just QA tests**:
```bash
cargo test --lib qa -- --test-threads=4
```
### `/opcodes`
**Purpose**: Comprehensive coverage tests for bytecode opcodes and operation codes.
- Tests verify individual opcode behavior in isolation
- Tests verify opcode combinations and nesting
- **Includes**:
- Basic opcode functionality tests
- Edge cases for each opcode
- Opcode interaction tests
- Stress tests for rare/complex opcode combinations
**Run just opcode tests**:
```bash
cargo test --lib opcode -- --test-threads=4
```
### `/mechanics`
**Purpose**: Game mechanics and rule engine integration tests.
- Tests verify multi-turn sequences
- Tests verify phase transitions
- Tests verify state consistency during complex gameplay
- **Includes**:
- Card interaction chains
- Stat/effect buff combinations
- Trigger and response mechanics
- Game flow and phase management
**Run just mechanics tests**:
```bash
cargo test --lib mechanics -- --test-threads=4
```
### `/edge_cases`
**Purpose**: Stress tests, regression tests, and unusual scenarios.
- Tests for rare ability bytecode sequences
- Stress tests for complex nested conditionals
- Tests for boundary conditions and limits
- Regression tests for previously-fixed bugs
- **Includes**:
- Longest/most complex compiled abilities
- Stress tests for deeply nested conditions
- Memory limits and performance stress
- Multi-ability interaction stress tests
**Run just edge case tests**:
```bash
cargo test --lib edge_cases -- --test-threads=4
```
## Test Execution Strategies
### Quick CI Pass
```bash
# ~30 seconds - Tests critical paths only
cargo test --lib qa -- --test-threads=4
```
### Full Coverage
```bash
# ~18 seconds - All tests with parallelization
cargo test --lib
```
### Single-Threaded Debugging
```bash
# ~70 seconds - For deterministic ordering/bug reproduction
cargo test --lib -- --test-threads=1
```
### Category-Specific Testing
```bash
# Run tests from specific categories
cargo test --lib qa::batch_4
cargo test --lib opcode::rare_bytecode_stress
cargo test --lib mechanics::card_interaction
cargo test --lib edge_cases::complex_ability
```
## Total Test Count: 568
- QA Tests: 163 (Official Q&A document verification)
- Opcode Tests: ~150 (Bytecode operation coverage)
- Mechanics Tests: ~180 (Game flow and interaction)
- Edge Cases: ~75 (Stress, regression, rare scenarios)
## Performance Notes
- **Parallelization**: Tests run with 4-8 threads by default
- **Speed**: 17-18 seconds for full suite (parallelized)
- **Single-threaded**: ~70 seconds (use for deterministic debugging)
- **Memory**: ~200MB during test execution
## Adding New Tests
1. **New Q&A test?** β†’ Add to `src/qa/batch_*.rs` (existing organization)
2. **New opcode test?** β†’ Add to `/opcodes/opcode_*.rs`
3. **New mechanics test?** β†’ Add to `/mechanics/game_flow.rs` or similar
4. **Stress/edge case?** β†’ Add to `/edge_cases/stress_*.rs`
Tests automatically discovered via Cargo's `#[test]` attribute macro.