def test_plan_perfs_from_dic(self): csvlines = FittingUtilTestCase.csv_content.splitlines() csvdic = f_util.csv_value_dict_from_iter(csvlines) plan, perfs, _, _ = f_util.plan_perfs_from_dic(csvdic, 'tss', '60m_critical_power', True) self.assertTrue(len(plan) == len(perfs)) plan, perfs, _, _ = f_util.plan_perfs_from_dic(csvdic, 'tss', '60m_critical_power', True, 0.3) self.assertTrue(len(plan) == len(perfs))
def test_accumulate_loads_per_day(self): csvlines = FittingUtilTestCase.csv_content.splitlines() csvdic = f_util.csv_value_dict_from_iter(csvlines) dates = csvdic['date'] loads = list(map(float, csvdic['skiba_bike_score'])) acc_loads = f_util.accumulate_loads_per_day(dates, loads) self.assertTrue(len(acc_loads) == 7) self.assertTrue(acc_loads[1][1] == 200)
def test_span_best_over_weeks(self): csvlines = FittingUtilTestCase.csv_content.splitlines() csvdic = f_util.csv_value_dict_from_iter(csvlines) dates, loads, perfs = f_util.span_best_over_weeks(csvdic, 'skiba_bike_score', '60m_critical_power') self.assertTrue(perfs[0] == 170) self.assertTrue(perfs[0] == perfs[1]) self.assertTrue(perfs[1] == perfs[2]) self.assertTrue(perfs[3] == 180)
def test_collapse_perfs_per_day(self): csvlines = FittingUtilTestCase.csv_content.splitlines() csvdic = f_util.csv_value_dict_from_iter(csvlines) dates, loads, perfs = f_util.span_best_over_weeks(csvdic, 'skiba_bike_score', '60m_critical_power') col_perfs = f_util.collapse_perfs_per_day(dates, perfs) self.assertTrue(len(col_perfs) == 7) expected = [(datetime.date(2014, 2, 15), 170), (datetime.date(2014, 2, 16), 170), (datetime.date(2014, 2, 17), 180), (datetime.date(2014, 3, 1), 190), (datetime.date(2014, 3, 29), 200), (datetime.date(2015, 3, 1), 150), (datetime.date(2015, 3, 29), 90)] self.assertTrue(col_perfs == expected)
def test_span_best_over_time_frame(self): def key_func(x): return x[0].year, x[0].month # group by key (year, month) csvlines = FittingUtilTestCase.csv_content.splitlines() csvdic = f_util.csv_value_dict_from_iter(csvlines) dates = f_util.parse_date_field(csvdic['date']) loads = list(map(float, csvdic['skiba_bike_score'])) perfs = list(map(float, csvdic['60m_critical_power'])) trainings = zip(dates, loads, perfs) dates, loads, perfs = f_util.span_best_over_time_frame(trainings, key_func, min_group_size=5) self.assertTrue(dates == []) self.assertTrue(loads == []) self.assertTrue(perfs == [])
def test_csv_value_dict_from_iter(self): csvlines = FittingUtilTestCase.csv_content.splitlines() csvdic = f_util.csv_value_dict_from_iter(csvlines) self.assertTrue(len(csvdic['date']) == 8) self.assertTrue(len(csvdic['60m_critical_power']) == 8) self.assertTrue(len(csvdic['skiba_bike_score']) == 8)