def test_fa(self): """Test the aggregation of a single daily events to a monthly event.""" timeserie = TimeseriesStub() timeserie.add_value(datetime(2010, 12, 8), 20) monthly_events = [event for event in timeserie.monthly_events()] expected_monthly_events = [(datetime(2010, 12, 1), 20)] self.assertEqual(expected_monthly_events, monthly_events)
def test_d(self): """Test the value after the first date & time is zero.""" timeserie = TimeseriesStub() today = datetime(2010, 11, 24) timeserie.add_value(today, 20.0) tomorrow = today + timedelta(1) self.assertAlmostEqual(0.0, timeserie.get_value(tomorrow))
def test_ea(self): """Test the value before the third date & time is the second value.""" today = datetime(2010, 12, 20) timeserie = TimeseriesStub((today, 10.0), (today + timedelta(1), 20.0), (today + timedelta(2), 30.0)) self.assertAlmostEqual(20.0, timeserie.get_value(today + timedelta(1)))
def test_aa(self): """Test the case with timeseries that have different times.""" today = datetime(2011, 11, 3, 0, 0) later_today = datetime(2011, 11, 3, 9, 0) timeseries = [ TimeseriesStub((today, 2)), TimeseriesStub((later_today, 4)) ] events = [event for event in enumerate_events(*timeseries)] self.assertEqual([((today, 2), (later_today, 4))], events)
def test_c(self): """Test the case that the time series contains an empty time series""" today = datetime(2010, 12, 2) precipitation = TimeseriesStub() precipitation.add_value(today, 5) evaporation = TimeseriesStub() events = [e for e in enumerate_events(precipitation, evaporation)] expected_events = [((today, 5), (today, 0))] self.assertEqual(expected_events[0], events[0])
def test_a(self): """Test the aggregation of a single daily event to an average monthly event. """ timeserie = TimeseriesStub() timeserie.add_value(datetime(2010, 12, 8), 20) avg_monthly_events = [e for e in average_monthly_events(timeserie)] expected_avg_monthly_events = [(datetime(2010, 12, 1), 20.0)] self.assertEqual(expected_avg_monthly_events, avg_monthly_events)
def test_h(self): """Test multiply_timeseries on time series.""" today = datetime(2010, 12, 5) tomorrow = datetime(2010, 12, 6) timeserie = TimeseriesStub() timeserie.add_value(today, 10) timeserie.add_value(tomorrow, 20) expected_timeserie = [(today, 40), (tomorrow, 80)] multiplied_timeseries = \ list(multiply_timeseries(timeserie, 4).events()) self.assertEqual(expected_timeserie, multiplied_timeseries)
def test_ga(self): """Test add_timeseries on time series with different start and end dates. """ today = datetime(2010, 12, 5) tomorrow = datetime(2010, 12, 6) timeserie_a = TimeseriesStub((today, 10)) timeserie_b = TimeseriesStub((tomorrow, 40)) expected_events = [(today, 10), (tomorrow, 40)] events = list(add_timeseries(timeserie_a, timeserie_b).events()) self.assertEqual(expected_events, events)
def test_a(self): timeseries = TimeseriesStub((datetime(2011, 1, 26), 0.0), (datetime(2011, 2, 3), 10.0), (datetime(2011, 2, 28), 0.0)) timeseries_restricted = \ TimeseriesRestrictedStub(timeseries=timeseries, start_date=datetime(2011, 2, 2), end_date=datetime(2011, 2, 5)) expected_timeseries = TimeseriesStub((datetime(2011, 2, 2), 0.0), (datetime(2011, 2, 3), 10.0), (datetime(2011, 2, 4), 0.0)) self.assertEqual(list(expected_timeseries.events()), \ list(timeseries_restricted.events()))
def test_b(self): """Test the aggregation of multiple daily events to an average monthly event. The daily events lie within a single month. """ timeserie = TimeseriesStub() timeserie.add_value(datetime(2010, 12, 8), 20) timeserie.add_value(datetime(2010, 12, 9), 30) timeserie.add_value(datetime(2010, 12, 10), 40) avg_monthly_events = [e for e in average_monthly_events(timeserie)] expected_avg_monthly_events = [(datetime(2010, 12, 1), 30.0)] self.assertEqual(expected_avg_monthly_events, avg_monthly_events)
def test_g(self): """Test add_timeseries on time series with same start and end date.""" today = datetime(2010, 12, 5) tomorrow = datetime(2010, 12, 6) timeserie_a = TimeseriesStub() timeserie_a.add_value(today, 10) timeserie_a.add_value(tomorrow, 20) timeserie_b = TimeseriesStub() timeserie_b.add_value(today, 30) timeserie_b.add_value(tomorrow, 40) expected_timeserie = [(today, 40), (tomorrow, 60)] summed_timeseries = \ list(add_timeseries(timeserie_a, timeserie_b).events()) self.assertEqual(expected_timeserie, summed_timeseries)
def test_b(self): """Test the case that the time series contain different dates""" today = datetime(2010, 12, 2) tomorrow = datetime(2010, 12, 3) precipitation = TimeseriesStub() precipitation.add_value(today, 5) evaporation = TimeseriesStub() evaporation.add_value(today, 10) evaporation.add_value(tomorrow, 30) events = [e for e in enumerate_events(precipitation, evaporation)] expected_events = [((today, 5), (today, 10)), ((tomorrow, 0), (tomorrow, 30))] self.assertEqual(expected_events[0], events[0]) self.assertEqual(expected_events[1], events[1])
def test_i(self): """Test split_timeseries on time series.""" timeserie = TimeseriesStub() timeserie.add_value(datetime(2010, 12, 7), 10) timeserie.add_value(datetime(2010, 12, 8), 20) timeserie.add_value(datetime(2010, 12, 9), -5) expected_negative_timeserie_events = [(datetime(2010, 12, 7), 0), (datetime(2010, 12, 8), 0), (datetime(2010, 12, 9), -5)] expected_positive_timeserie_events = [(datetime(2010, 12, 7), 10), (datetime(2010, 12, 8), 20), (datetime(2010, 12, 9), 0)] splitted_timeseries = split_timeseries(timeserie) self.assertEqual(expected_negative_timeserie_events, \ list(splitted_timeseries[0].events())) self.assertEqual(expected_positive_timeserie_events, \ list(splitted_timeseries[1].events()))
def test_fc(self): """Test the aggregation of a multiple daily events to monthly events. """ timeserie = TimeseriesStub() timeserie.add_value(datetime(2010, 12, 8), 20) timeserie.add_value(datetime(2010, 12, 9), 30) timeserie.add_value(datetime(2010, 12, 10), 40) timeserie.add_value(datetime(2011, 1, 1), 50) monthly_events = [event for event in timeserie.monthly_events()] expected_monthly_events = [(datetime(2010, 12, 1), 90), (datetime(2011, 1, 1), 50)] self.assertEqual(expected_monthly_events, monthly_events)
def test_e(self): """Test the value before the second date & time is zero.""" timeserie = TimeseriesStub() today = datetime(2010, 11, 24) timeserie.add_value(today, 20.0) tomorrow = today + timedelta(1) day_after_tomorrow = tomorrow + timedelta(1) timeserie.add_value(day_after_tomorrow, 30.0) self.assertAlmostEqual(0.0, timeserie.get_value(tomorrow))
def test_l(self): """Test map_timeseries on a non-empty timeseries.""" timeseries = TimeseriesStub((datetime(2011, 7, 6), 10), (datetime(2011, 7, 7), 20), (datetime(2011, 7, 8), 30)) expected_events = [(datetime(2011, 7, 6), -10), (datetime(2011, 7, 7), -20), (datetime(2011, 7, 8), -30)] map_function = lambda v: -1.0 * abs(v) events = list(map_timeseries(timeseries, map_function).events()) self.assertEqual(expected_events, events)
def test_f(self): """Test missing dates are automatically added as zeros.""" timeserie = TimeseriesStub() today = datetime(2010, 12, 3) tomorrow = datetime(2010, 12, 4) day_after_tomorrow = datetime(2010, 12, 5) timeserie.add_value(today, 20) timeserie.add_value(day_after_tomorrow, 30) events = [event for event in timeserie.events()] expected_events = [(today, 20), (tomorrow, 0), (day_after_tomorrow, 30)] self.assertEqual(expected_events, events)
def test_c(self): """Test the aggregation of multiple daily events to an average monthly event. The daily events lie within two consecutive months. """ timeserie = TimeseriesStub() timeserie.add_value(datetime(2010, 12, 8), 20) timeserie.add_value(datetime(2010, 12, 9), 30) timeserie.add_value(datetime(2010, 12, 10), 40) timeserie.add_value(datetime(2011, 1, 1), 50) avg_monthly_events = [e for e in average_monthly_events(timeserie)] expected_avg_monthly_events = [(datetime(2010, 12, 1), 3.75), (datetime(2011, 1, 1), 50.0)] self.assertEqual(expected_avg_monthly_events, avg_monthly_events)
def test_j(self): """Test create_empty_timeseries on an empty timeseries.""" timeseries = TimeseriesStub() self.assertEqual(TimeseriesStub(), create_empty_timeseries(timeseries))
def test_c(self): """Test the value on the first date & time is the first value.""" timeserie = TimeseriesStub() today = datetime(2010, 11, 24) timeserie.add_value(today, 20.0) self.assertAlmostEqual(20.0, timeserie.get_value(today))
def test_k(self): """Test create_empty_timeseries on a non-empty timeseries.""" timeseries = TimeseriesStub((datetime(2011, 1, 26), 10)) expected_timeseries = TimeseriesStub((datetime(2011, 1, 26), 0.0)) self.assertEqual(expected_timeseries, create_empty_timeseries(timeseries))
def test_a(self): today = datetime(2010, 12, 2) tomorrow = datetime(2010, 12, 3) precipitation = TimeseriesStub() precipitation.add_value(today, 5) precipitation.add_value(tomorrow, 10) evaporation = TimeseriesStub() evaporation.add_value(today, 20) evaporation.add_value(tomorrow, 30) seepage = TimeseriesStub() seepage.add_value(today, 10) seepage.add_value(tomorrow, 20) events = [ e for e in enumerate_events(precipitation, evaporation, seepage) ] expected_events = [((today, 5), (today, 20), (today, 10)), ((tomorrow, 10), (tomorrow, 30), (tomorrow, 20))] self.assertEqual(expected_events, events)
def test_e(self): """Test enumerate_events returns an empty list with an empty time series. """ self.assertEqual([], list(enumerate_events(TimeseriesStub())))
def test_a(self): today = datetime(2010, 12, 2) tomorrow = datetime(2010, 12, 3) precipitation = TimeseriesStub() precipitation.add_value(today, 5) precipitation.add_value(tomorrow, 10) evaporation = TimeseriesStub() evaporation.add_value(today, 20) evaporation.add_value(tomorrow, 30) seepage = TimeseriesStub() seepage.add_value(today, 10) seepage.add_value(tomorrow, 20) events = [e for e in enumerate_events(precipitation, evaporation, seepage)] expected_events = [((today, 5), (today, 20), (today, 10)), ((tomorrow, 10), (tomorrow, 30), (tomorrow, 20))] self.assertEqual(expected_events, events)