diff --git a/tests/unit/test_mouse.py b/tests/unit/test_mouse.py index b2398bf..b674801 100644 --- a/tests/unit/test_mouse.py +++ b/tests/unit/test_mouse.py @@ -128,9 +128,17 @@ def test_no_sharp_turns_or_walls_near_endpoint() -> None: # Vertical wall: >=4 consecutive tail points within 2 px of # the target x while spanning >10 px of y. near_x = np.abs(tail[:, 0] - end[0]) <= 2.0 + run_start = 0 run = 0 - for i, flag in enumerate(near_x[:-1]): # exclude final point - run = run + 1 if flag else 0 - assert run < 4 or np.ptp(tail[near_x][:, 1]) <= 10.0, ( - f"{start}->{end} seed={seed}: vertical wall at target x" - ) + for j, flag in enumerate(near_x[:-1]): # exclude final point + if flag: + if run == 0: + run_start = j + run += 1 + else: + run = 0 + if run >= 4: + span = np.ptp(tail[run_start : j + 1, 1]) + assert span <= 10.0, ( + f"{start}->{end} seed={seed}: vertical wall at target x" + ) diff --git a/tests/unit/test_postprocess.py b/tests/unit/test_postprocess.py index c053a04..3bd1faa 100644 --- a/tests/unit/test_postprocess.py +++ b/tests/unit/test_postprocess.py @@ -199,3 +199,12 @@ def test_warp_endpoints_correction_local_to_each_end() -> None: f[0] = 0.08 # start residual only fo, _ = warp_endpoints(f, l) assert np.abs(fo[24:] - f[24:]).max() < 0.02 + + +def test_warp_endpoints_does_not_mutate_inputs() -> None: + f = np.linspace(0.05, 1.10, 32) + l = np.linspace(0.03, -0.07, 32) + f_orig, l_orig = f.copy(), l.copy() + warp_endpoints(f, l) + assert np.array_equal(f, f_orig) + assert np.array_equal(l, l_orig)