def test_report_init(): a = Report(1, 3, name="a") assert a.t0 == 1 assert a.te == 3 assert a.name == "a" start = pytz.utc.localize(dt.datetime(2000, 1, 1)) end = start + dt.timedelta(seconds=60) b = Report(start, end, name="b") assert b.t0 == 946684800.0 assert b.te == 946684860.0 start = dt.datetime(2000, 1, 1) end = start + dt.timedelta(seconds=60) c = Report(start, end, name="c") assert c.t0 == 946684800.0 assert c.te == 946684860.0 with pytest.raises(ValueError): d = Report(t0=5, te=1, name="d") return True
def test_timeserie_toreports(): a = TimeSerie(10 * np.sin(np.linspace(0, 2 * np.pi, 100)), t0=1, fs=10, name="a") b = a > 4 b.name = "a > 4" reports = b.to_reports() assert len(reports) == 1 assert compare_reports(reports[0], Report(1.7, 5.4, name="a > 4")) return True
def test_report_totimeserie(): a = Report(2, 4, name="a") ts_a = a.to_timeserie() assert compare_timeseries( ts_a, TimeSerie([0.0, 1.0, 1.0, 0.0], t0=1.0, fs=1, name="a")) b = Report(3, 8, name="b") ts_b = b.to_timeserie(fs=4, window=2) cmp_b = TimeSerie([0.0, 0.0] + (20 * [1.0]) + [0.0, 0.0], t0=2.5, fs=4, name="b") ts_b._reprconfig["threshold"] = 100 cmp_b._reprconfig["threshold"] = 100 assert compare_timeseries(ts_b, cmp_b) return True
def test_statechangearray_toreports(): a = StateChangeArray([True, False, True, False], t=[2, 4, 6, 8], name="a") r1, r2 = a.to_reports() assert compare_reports(r1, Report(2, 4, name="a")) assert compare_reports(r2, Report(6, 8, name="a")) b = StateChangeArray([False, True, False, True, False], t=[1, 2, 4, 6, 8], name="b") r3, r4 = b.to_reports() assert compare_reports(r3, Report(2, 4, name="b")) assert compare_reports(r4, Report(6, 8, name="b")) c = StateChangeArray([False, True, False, True, False], t=[1, 2, 4, 6, 8], name="c") r5, r6 = c.to_reports() assert compare_reports(r5, Report(2, 4, name="c")) assert compare_reports(r6, Report(6, 8, name="c")) d = StateChangeArray([1, 2, 4, 7], t=[2, 4, 6, 8], name="d") with pytest.raises(ValueError): d.to_reports() return True
def test_statechangearray_fromreports(): a1 = Report(t0=2, te=4, name="a") a2 = Report(t0=6, te=8, name="a") a = StateChangeArray.from_reports([a1, a2]) assert compare_statechangearrays( a, StateChangeArray([True, False, True, False], t=[2, 4, 6, 8], name="a")) a3 = Report(t0=12, te=13, name="a") a3.te = 10 # this is a hacky way to test errors in the from_reports() method with pytest.raises(ValueError): b = StateChangeArray.from_reports([a1, a2, a3]) a4 = Report(t0=7, te=10, name="a") with pytest.raises(ValueError): c = StateChangeArray.from_reports([a1, a2, a4]) d = StateChangeArray.from_reports([a1, a2, a4], on_error="ignore") assert compare_statechangearrays( d, StateChangeArray([True, False, True, False], t=[2, 4, 6, 8], name="a")) e = StateChangeArray.from_reports([a1, a2, a4], on_error="extend") assert compare_statechangearrays( e, StateChangeArray([True, False, True, False], t=[2, 4, 6, 10], name="a")) return True
def test_report_tostatechangearray(): a = Report(1, 4, name="a") array = a.to_statechangearray() assert compare_statechangearrays( array, StateChangeArray([True, False], t=[1, 4], name="a")) return True
def test_report_toevent(): a = Report(1, 3, name="a") a_start, a_end = a.to_events() assert compare_events(a_start, Event(1, t=1, name="a")) assert compare_events(a_end, Event(0, t=3, name="a")) return True
def test_report_repr(): a = Report(0, 8, name="a") assert repr(a) == "Report(t0=0, te=8, name='a')" return True
def test_report_duration(): start = dt.datetime(2000, 1, 1) end = start + dt.timedelta(seconds=60) a = Report(start, end, name="a") assert a.duration == 60 return True