9cd3170e8a
- Add stability detection and threshold classification features with corresponding tests
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from pygui.backend.stability_detector import (
|
|
StabilityDetector, STATE_IDLE, STATE_RAMP, STATE_SET,
|
|
)
|
|
|
|
|
|
SET_POINT = 149.0
|
|
|
|
def make():
|
|
return StabilityDetector(idle_below = 50.0, tolerance=1.0, settle_seconds=2.0)
|
|
|
|
def test_idle_when_cold():
|
|
d = make()
|
|
assert d.update(avg=25.0, time=0.0, set_point=SET_POINT) == STATE_IDLE
|
|
|
|
def test_ramp_while_far_from_setpoint():
|
|
d = make()
|
|
d.update(avg=100.0, time=0.0, set_point=SET_POINT)
|
|
|
|
def test_ramp_until_settle_time_elapses():
|
|
d = make()
|
|
assert d.update(avg=149.2, time=0.0, set_point=SET_POINT) == STATE_RAMP
|
|
assert d.update(avg=148.9, time=0.0, set_point=SET_POINT) == STATE_RAMP
|
|
|
|
def test_set_after_holding_near_setpoint():
|
|
d = make()
|
|
d.update(avg=149.2, time=0.0, set_point=SET_POINT)
|
|
d.update(avg=148.9, time=1.0, set_point=SET_POINT)
|
|
assert d.update(avg=149.0, time=2.5, set_point=SET_POINT) == STATE_SET
|
|
|
|
|
|
def test_back_to_ramp_on_disturbance():
|
|
d = make()
|
|
for t in (0.0, 1.0, 2.5):
|
|
d.update(149.0, t, set_point=SET_POINT)
|
|
assert d.update(avg=160.0, time=3.0, set_point=SET_POINT) == STATE_RAMP |