def test_statechangearray_invert(): a = StateChangeArray([True, False, True, False], t=[2, 4, 6, 8], name="a") not_a = ~a assert compare_statechangearrays( not_a, BooleanStateChangeArray([False, True, False, True], t=[2, 4, 6, 8], name="(~a)"), ) with pytest.raises(ValueError): b = StateChangeArray([1, 2, 3, 4], t=[2, 4, 6, 8], name="b") not_b = ~b return True
def test_statechangearray_or(): a = StateChangeArray([True, False, True, False], t=[2, 4, 6, 8], name="a") b = StateChangeArray([True, False, True, False], t=[3, 5, 7, 9], name="b") with pytest.raises(ValueError): a_and_1 = a | 1 c = StateChangeArray([2, 4, 6, 8], t=[1, 3, 4, 6], name="c") with pytest.raises(ValueError): a_and_c = a | c a_and_b = a | b assert compare_statechangearrays( a_and_b, BooleanStateChangeArray([True, False, True, False], t=[2, 5, 6, 9], name="(a | b)"), ) a_and_a = a | a a_ = a a_.name = "(a | a)" assert compare_statechangearrays(a_and_a, a_) return True
def test_statechangearray_exor(): a = StateChangeArray([True, False, True, False], t=[2, 4, 6, 8], name="a") b = StateChangeArray([True, False, True, False], t=[3, 5, 7, 9], name="b") with pytest.raises(ValueError): a_and_1 = a ^ 1 c = StateChangeArray([2, 4, 6, 8], t=[1, 3, 4, 6], name="c") with pytest.raises(ValueError): a_and_c = a ^ c a_and_b = a ^ b assert compare_statechangearrays( a_and_b, BooleanStateChangeArray( [False, True, False, True, False, True, False], t=[3, 4, 5, 6, 7, 8, 9], name="(a ^ b)", ), ) a_and_a = a ^ a a_ = a a_.name = "(a ^ a)" assert compare_statechangearrays( a_and_a, BooleanStateChangeArray([False], t=[2], name="(a ^ a)")) return True
def test_statechangearray_totimeseries(): a = StateChangeArray([1, 3, 5, 7], t=[1, 2, 4, 7], name="a") ts_a = a.to_timeseries(fs=2) assert compare_timeseries( ts_a, TimeSerie([1, 1, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 7], t0=1, fs=2, name="a")) b = StateChangeArray([1, 3, 5, 7], t=[1, 2, 2.25, 4]) with pytest.raises(ValueError): ts_b = b.to_timeseries(fs=2) with pytest.raises(NameError): b.to_timeseries(fs=2, method="nonExistingMethod") c = StateChangeArray([1, 3, 5, 7], t=[1, 2, 4, 8], name="c") ts_c = c.to_timeseries(fs=2, method="interpolate") assert compare_timeseries( ts_c, TimeSerie( [1, 2, 3, 3.5, 4, 4.5, 5, 5.25, 5.5, 5.75, 6, 6.25, 6.5, 6.75, 7], t0=1, fs=2, name="c", ), ) return True
def test_statechangearray_timerule(): a = StateChangeArray( [False, True, False, True, False, True, False], t=[0, 5, 10, 20, 30, 45, 60], name="a", ) a_timerule_1 = a.timerule(1) assert compare_statechangearrays(a_timerule_1, a) b = StateChangeArray( [False, True, False, True, False, True, False], t=[0, 5, 10, 20, 30, 45, 60], name="b", ) b_timerule_6 = b.timerule(6) assert compare_statechangearrays( b_timerule_6, StateChangeArray([False, True, False, True, False], t=[0, 20, 30, 45, 60], name="b"), ) c = StateChangeArray( [False, True, False, True, False, True, False], t=[0, 5, 10, 20, 30, 45, 60], name="c", ) c_timerule_11 = c.timerule(11) assert compare_statechangearrays( c_timerule_11, StateChangeArray([False, True, False], t=[0, 45, 60], name="c")) d = StateChangeArray( [False, True, False, True, False, True, False], t=[0, 5, 10, 20, 30, 45, 60], name="d", ) d_timerule_11 = d.timerule(11, when=False, operator="<") assert compare_statechangearrays( d_timerule_11, StateChangeArray([False, True, False, True, False], t=[0, 5, 10, 20, 60], name="d"), ) y = StateChangeArray( [False, True, False, True, False, True, False], t=[0, 5, 10, 20, 30, 45, 60], name="y", ) y.timerule(6, inplace=True) assert compare_statechangearrays( y, StateChangeArray([False, True, False, True, False], t=[0, 20, 30, 45, 60], name="y"), ) z = StateChangeArray([1, 2, 1, 2, 1, 2, 1], t=[0, 5, 10, 20, 30, 45, 60], name="z") with pytest.raises(ValueError): z_time_6 = z.timerule(6) return True