This repository was archived by the owner on Mar 15, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbook_store_test.py
More file actions
83 lines (60 loc) · 2.65 KB
/
Copy pathbook_store_test.py
File metadata and controls
83 lines (60 loc) · 2.65 KB
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
import unittest
from book_store import total
# Tests adapted from `problem-specifications//canonical-data.json`
class BookStoreTest(unittest.TestCase):
def test_only_a_single_book(self):
basket = [1]
self.assertEqual(total(basket), 800)
def test_two_of_the_same_book(self):
basket = [2, 2]
self.assertEqual(total(basket), 1600)
def test_empty_basket(self):
basket = []
self.assertEqual(total(basket), 0)
def test_two_different_books(self):
basket = [1, 2]
self.assertEqual(total(basket), 1520)
def test_three_different_books(self):
basket = [1, 2, 3]
self.assertEqual(total(basket), 2160)
def test_four_different_books(self):
basket = [1, 2, 3, 4]
self.assertEqual(total(basket), 2560)
def test_five_different_books(self):
basket = [1, 2, 3, 4, 5]
self.assertEqual(total(basket), 3000)
def test_two_groups_of_four_is_cheaper_than_group_of_five_plus_group_of_three(self):
basket = [1, 1, 2, 2, 3, 3, 4, 5]
self.assertEqual(total(basket), 5120)
def test_two_groups_of_four_is_cheaper_than_groups_of_five_and_three(self):
basket = [1, 1, 2, 3, 4, 4, 5, 5]
self.assertEqual(total(basket), 5120)
def test_group_of_four_plus_group_of_two_is_cheaper_than_two_groups_of_three(self):
basket = [1, 1, 2, 2, 3, 4]
self.assertEqual(total(basket), 4080)
def test_two_each_of_first_4_books_and_1_copy_each_of_rest(self):
basket = [1, 1, 2, 2, 3, 3, 4, 4, 5]
self.assertEqual(total(basket), 5560)
def test_two_copies_of_each_book(self):
basket = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
self.assertEqual(total(basket), 6000)
def test_three_copies_of_first_book_and_2_each_of_remaining(self):
basket = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1]
self.assertEqual(total(basket), 6800)
def test_three_each_of_first_2_books_and_2_each_of_remaining_books(self):
basket = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1, 2]
self.assertEqual(total(basket), 7520)
def test_four_groups_of_four_are_cheaper_than_two_groups_each_of_five_and_three(
self
):
basket = [1, 1, 2, 2, 3, 3, 4, 5, 1, 1, 2, 2, 3, 3, 4, 5]
self.assertEqual(total(basket), 10240)
# Additional tests for this track
def test_two_groups_of_four_and_a_group_of_five(self):
basket = [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5]
self.assertEqual(total(basket), 8120)
def test_shuffled_book_order(self):
basket = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3]
self.assertEqual(total(basket), 8120)
if __name__ == "__main__":
unittest.main()