diff --git a/roadscore/prototype/test_prepared_core.py b/roadscore/prototype/test_prepared_core.py index 042a408d78..3c0951b7e3 100644 --- a/roadscore/prototype/test_prepared_core.py +++ b/roadscore/prototype/test_prepared_core.py @@ -46,5 +46,28 @@ class PreparedTests(unittest.TestCase): for key in ('ROADSCORE_PREPARED_SHOWCASE','ROADSCORE_SHOWCASE_SESSION','SIMULATION'): self.assertFalse(isolated_replay({**env,key:''})) self.assertFalse(isolated_replay({**env,'OPENPILOT_ZMQ_NAMESPACE':'roadscore-native-abc'})) + def test_staged_cut_stays_clear_with_signal_and_full_presentation_stack(self): + engine=PreparedPresentation(self.path) + rate=48000;payoff=2.5 + samples=np.arange(4*rate)/rate + core=np.repeat((.15*np.sin(2*np.pi*90*samples))[:,None],2,axis=1).astype(np.float32) + before=core.copy();chunks=[] + for frame in range(0,len(core),960): + now=frame/rate + curve=dict(kind='curve',phase='anticipation' if now=3.5:curve=dict(kind='curve',phase='neutral',amount=0.,activation=None) + state=dict(active=True,signal_on=True,fresh=True,car_fresh=True,model_fresh=True, + speed=10.,alert_key='',alert_meaningful=False,curve=curve,route_t=now) + wet,_=engine.process(core[frame:frame+960],frame,state,('engaged','left')) + chunks.append(wet) + result=np.concatenate(chunks) + self.assertEqual(engine.curve.impact.actual_payoff,round(payoff*rate)) + self.assertLess(float(np.max(abs(result[round((payoff-.08)*rate):round((payoff-.02)*rate)]))),1e-6) + self.assertGreater(float(np.sqrt(np.mean(result[round((payoff+.04)*rate):round((payoff+.12)*rate)]**2))),.09) + np.testing.assert_array_equal(core,before) + self.assertEqual(result.shape,core.shape) + self.assertTrue(np.isfinite(result).all()) if __name__=='__main__':unittest.main()