test(physics): Phase W triage — fix stale Path6/tick-gate/ComputeOffset tests (behavior changed by L.3.2/L.4/L.5)
Four tests were asserting pre-change behavior after intentional production changes: #2 BSPStepUpTests.C3_Path6_AirborneMoverHitsSteepSlope_SetsCollideb1af56e(L.4, 2026-04-30) added a steep-normal gate in Path 6 that fires BEFORE SetCollide. Airborne sphere hitting steep poly now returns Slid + Collide=false (slide-tangent interim fix). Updated assertion + renamed to ReturnsSlid. #7 PlayerMovementControllerTests.Update_ForwardInput_MovesInFacingDirection #8 DispatcherToMovementIntegrationTests.Dispatcher_W_held_produces_forward_motion235de33(L.5, 2026-04-30) added _physicsAccum accumulator gate: a single Update(1.0f) only integrates one MaxQuantum (0.1s ~ 0.312m at walk speed), not the full 1s. Time is carried in accumulator (not dropped). Fixed both tests to loop Update(MaxQuantum) for ~11 ticks to accumulate >2m of real forward motion, preserving the original distance-threshold assertion intent. #9 PositionManagerTests.ComputeOffset_BothActive_Combined842dfcd(L.3.2, 2026-05-03) changed ComputeOffset from additive (rootMotion + correction) to replace semantics: when AdjustOffset returns non-zero, it REPLACES root motion (retail Frame::operator= semantics). offset.Y = 0 (not 0.4); root motion is dropped when catch-up engages. Updated assertion and renamed to CorrectionReplacesRootMotion. Suite: 9 failures → 5 (only the 5 known-bug tests remain red). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
21609a7cd7
commit
4bc99fc6fd
4 changed files with 48 additions and 19 deletions
|
|
@ -100,7 +100,14 @@ public class DispatcherToMovementIntegrationTests
|
|||
Assert.True(input.Forward);
|
||||
Assert.False(input.Run);
|
||||
|
||||
var result = controller.Update(1.0f, input);
|
||||
// L.5 physics-tick gate (235de33, 2026-04-30): Update() integrates
|
||||
// only one MaxQuantum (~0.1s) physics step per call, matching
|
||||
// retail's 30Hz physics gate. Drive the controller one MaxQuantum
|
||||
// at a time for ~1s to accumulate real forward motion.
|
||||
MovementResult result = default;
|
||||
int ticks = (int)MathF.Ceiling(1.0f / PhysicsBody.MaxQuantum) + 1; // ~11 ticks
|
||||
for (int i = 0; i < ticks; i++)
|
||||
result = controller.Update(PhysicsBody.MaxQuantum, input);
|
||||
Assert.True(result.Position.X > 96f + 2f, $"X={result.Position.X} should have moved forward");
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue