def test_groupByRacer_does_not_add_to_groups_if_groups_is_already_in_memory(self): reader = FileReader('tests/repository/base.txt') logs = LogEntriesRepository(reader) stats = StatisticsRepository(logs) stats._calculateResult(list(logs.get_logs())) stats._calculateResult(list(logs.get_logs())) stats._calculateResult(list(logs.get_logs())) self.assertEqual(6, len(stats.groups))
def test_parseLine_returns_valid_LogEntry_object(self): reader = FileReader('tests/repository/one_entry.txt') repository = LogEntriesRepository(reader) line = '23:49:08.277\t038 – F.MASSA\t1\t1:02.852\t44,275' logEntry = repository._parseLine(0, line) self.assertIsNotNone(logEntry.time) self.assertIsNotNone(logEntry.code) self.assertIsNotNone(logEntry.pilot) self.assertIsNotNone(logEntry.lap) self.assertIsNotNone(logEntry.lapTime) self.assertIsNotNone(logEntry.avgSpeed)
def test_calculateResult_returns_list_with_expected_classification(self): reader = FileReader('tests/repository/base.txt') logs = LogEntriesRepository(reader) stats = StatisticsRepository(logs) result = stats._calculateResult(list(logs.get_logs())) self.assertEqual(result[0].code, '038') self.assertEqual(result[1].code, '002') self.assertEqual(result[2].code, '033') self.assertEqual(result[3].code, '023') self.assertEqual(result[4].code, '015') self.assertEqual(result[5].code, '011')
def test_get_result_returns_tuple_with_expected_calculations(self): reader = FileReader('tests/repository/base.txt') logs = LogEntriesRepository(reader) stats = StatisticsRepository(logs) position, code, name, completedLaps, timeTotal = list(stats.get_result())[0] self.assertEqual(position, 1) self.assertEqual(code, '038') self.assertEqual(name, 'F.MASS') self.assertEqual(completedLaps, '4') self.assertEqual(timeTotal, '4:11.578') position, code, name, completedLaps, timeTotal = list(stats.get_result())[-1] self.assertEqual(position, 6) self.assertEqual(code, '011') self.assertEqual(name, 'S.VETTEL') self.assertEqual(completedLaps, '3') self.assertEqual(timeTotal, '6:27.276')
def test_get_logs_skips_first_line(self): reader = FileReader('tests/repository/one_entry.txt') repository = LogEntriesRepository(reader) logs = list(repository.get_logs()) self.assertTrue(len(logs) == 1)
def test_parseLine_returns_None_if_line_has_invalid_format(self): reader = FileReader('tests/repository/one_entry.txt') repository = LogEntriesRepository(reader) line = '23:49:08.277\t038 – F.MASSA\t1\t1:02.852\t44?275' logEntry = repository._parseLine(0, line) self.assertIsNone(logEntry)
def test_isLineParseable_returns_true_if_line_in_expected_format(self): reader = FileReader('tests/repository/one_entry.txt') repository = LogEntriesRepository(reader) line = '23:49:08.277\t038 – F.MASSA\t1\t1:02.852\t44,275' isParseable = repository._isLineParseable(0, line) self.assertTrue(isParseable)
def test_get_logs_processes_all_lines(self): reader = FileReader('tests/repository/base.txt') repository = LogEntriesRepository(reader) logs = list(repository.get_logs()) self.assertTrue(len(logs) == 23)
def test_get_logs_ignores_empty_lines(self): reader = FileReader('tests/repository/one_entry_empty_lines.txt') repository = LogEntriesRepository(reader) logs = list(repository.get_logs()) self.assertTrue(len(logs) == 1)