41 lines
1.8 KiB
Markdown
41 lines
1.8 KiB
Markdown
## Context
|
||
|
||
Step 5 adds regression tests for the client prediction jitter path. Tests are placed in `SyncStrategyTests.cs` alongside existing prediction tests, following the same Arrange-Act-Assert pattern using Unity `GameObject` + `Rigidbody` + `MovementComponent` setup.
|
||
|
||
## Goals / Non-Goals
|
||
|
||
**Goals:**
|
||
- Test that live prediction and replay produce identical trajectories for non-zero turn input (the `client-prediction-replay` spec requires this).
|
||
- Test that `ClientPredictionBuffer` correctly exposes `LastAcknowledgedMoveTick` (the `client-prediction-diagnostics` spec requires this).
|
||
- Test that correction magnitude handlers receive valid values from `ControlledPlayerCorrection.Resolve`.
|
||
|
||
**Non-Goals:**
|
||
- No production code changes.
|
||
- No new specs — existing specs already define the requirements.
|
||
|
||
## Tests to Add
|
||
|
||
### Test 1: Replay trajectory matches live prediction for non-zero turn
|
||
```
|
||
ReplayPendingInputs_NonZeroTurn_MatchesLivePrediction
|
||
```
|
||
- Arrange: set up MovementComponent, turn=0.5, throttle=1, total duration=0.10s
|
||
- Act: run live step-by-step (ApplyTankMovement × 2 × 0.05s) vs replay (ReplayPendingInputs)
|
||
- Assert: positions and headings match within tolerance
|
||
|
||
### Test 2: ClientPredictionBuffer exposes LastAcknowledgedMoveTick
|
||
```
|
||
ClientPredictionBuffer_LastAcknowledgedMoveTick_IsExposed
|
||
```
|
||
- Arrange: buffer with recorded inputs at ticks 10, 11, 12
|
||
- Act: apply authoritative state acknowledging tick 11
|
||
- Assert: `LastAcknowledgedMoveTick == 11`
|
||
|
||
### Test 3: Correction magnitude propagates through Reconcile
|
||
```
|
||
ControlledPlayerCorrection_CorrectionMagnitude_IsComputable
|
||
```
|
||
- Arrange: predicted pose (0,0,0), authoritative (0.5,0,0), 10° heading diff
|
||
- Act: `ControlledPlayerCorrection.Resolve(...)`
|
||
- Assert: `result.PositionError > 0`, `result.RotationErrorDegrees > 0`
|