-
Notifications
You must be signed in to change notification settings - Fork 4
/
test_score.py
executable file
·121 lines (103 loc) · 4.24 KB
/
test_score.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#! /usr/bin/python3
import logging
import unittest
from score import Car, Ride, Score
from score import check_vehicles, check_ride_ids
from score import compute_score, eval_ride
from score import parse_input, parse_output
RES_FOLDER = 'res/'
logging.basicConfig(level=logging.ERROR) # disables warnings
class TestScore(unittest.TestCase):
def test_score_a_example(self):
score = compute_score(RES_FOLDER + "a_example.in", RES_FOLDER + "a_example.out")
self.assertEqual(score.raw_score, 8)
self.assertEqual(score.bonus_score, 2)
def test_score_b_should_be_easy(self):
score = compute_score(RES_FOLDER + "b_should_be_easy.in",
RES_FOLDER + "b_should_be_easy.out")
self.assertEqual(score.raw_score, 169677)
self.assertEqual(score.bonus_score, 7200)
def test_possible_ride_with_bonus(self):
car = Car()
car.step = 0
car.x, car.y = 0, 0
ride = Ride(0, 0, 10, 0, 20, 12, 24)
bonus = 42
steps = 26
score = Score()
eval_ride(car, ride, score, bonus, steps)
self.assertEqual(score.raw_score, 10)
self.assertEqual(score.bonus_score, 42)
self.assertEqual(car.step, 22)
self.assertEqual(car.x, 0)
self.assertEqual(car.y, 20)
def test_possible_ride_without_bonus(self):
car = Car()
car.step = 0
car.x, car.y = 0, 0
ride = Ride(0, 0, 10, 0, 20, 8, 24)
bonus = 42
steps = 26
score = Score()
eval_ride(car, ride, score, bonus, steps)
self.assertEqual(score.raw_score, 10)
self.assertEqual(score.bonus_score, 0)
self.assertEqual(car.step, 20)
self.assertEqual(car.x, 0)
self.assertEqual(car.y, 20)
def test_impossible_ride(self):
car = Car()
car.step = 0
car.x, car.y = 0, 0
ride = Ride(0, 0, 10, 0, 20, 6, 18)
bonus = 42
steps = 26
score = Score()
eval_ride(car, ride, score, bonus, steps)
self.assertEqual(score.raw_score, 0)
self.assertEqual(score.bonus_score, 0)
self.assertEqual(car.step, 20)
self.assertEqual(car.x, 0)
self.assertEqual(car.y, 20)
def test_impossible_ride_simulation_step(self):
car = Car()
car.step = 0
car.x, car.y = 0, 0
ride = Ride(0, 0, 4, 0, 20, 2, 22)
bonus = 42
steps = 10
score = Score()
eval_ride(car, ride, score, bonus, steps)
self.assertEqual(score.raw_score, 0)
self.assertEqual(score.bonus_score, 0)
self.assertEqual(car.step, 20)
self.assertEqual(car.x, 0)
self.assertEqual(car.y, 20)
def test_valid_vehicles_a(self):
(_rides_list, _rows, _columns, vehicles, _rides, _bonus, _steps) = parse_input(RES_FOLDER + "a_example.in")
vehicles_rides = parse_output(RES_FOLDER + "a_example.out")
self.assertTrue(check_vehicles(vehicles, len(vehicles_rides)))
def test_valid_vehicles_b(self):
(_rides_list, _rows, _columns, vehicles, _rides, _bonus, _steps) = parse_input(
RES_FOLDER + "b_should_be_easy.in")
vehicles_rides = parse_output(RES_FOLDER + "b_should_be_easy.out")
self.assertTrue(check_vehicles(vehicles, len(vehicles_rides)))
def test_valid_rids_a(self):
(_rides_list, _rows, _columns, _vehicles, rides, _bonus, _steps) = parse_input(RES_FOLDER + "a_example.in")
vehicles_rides = parse_output(RES_FOLDER + "a_example.out")
self.assertTrue(check_ride_ids(vehicles_rides, rides))
def test_valid_rids_b(self):
(_rides_list, _rows, _columns, _vehicles, rides, _bonus, _steps) = parse_input(
RES_FOLDER + "b_should_be_easy.in")
vehicles_rides = parse_output(RES_FOLDER + "b_should_be_easy.out")
self.assertTrue(check_ride_ids(vehicles_rides, rides))
def test_invalid_rids_range(self):
rides = 10
vehicles_rides = [[1, 2, 3], [12]]
self.assertFalse(check_ride_ids(vehicles_rides, rides))
def test_invalid_rids_assigned_more_than_once(self):
rides = 10
vehicles_rides = [[1, 2, 3], [2, 8]]
self.assertFalse(check_ride_ids(vehicles_rides, rides))
if __name__ == '__main__':
unittest.main()