Python: book_store
This commit is contained in:
parent
8190c11851
commit
f5e841e110
4 changed files with 232 additions and 0 deletions
83
python/book-store/book_store_test.py
Normal file
83
python/book-store/book_store_test.py
Normal file
|
|
@ -0,0 +1,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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue