def test_billbatch_total_calculates_total_amount_of_bills_in_batch(self): bills = [Bill(5), Bill(3), Bill(2)] test = BillBatch(bills) self.assertIsNotNone(test.total()) self.assertEqual(test.total(), 10)
def test_if_str_representataion_is_as_expected(self): bill1 = Bill(10) bill2 = Bill(5) self.assertEqual(str(bill1),'A 10$ bill.') self.assertEqual(str(bill2),'A 5$ bill.')
def test_bill_eq_comparison_is_as_expected_one(self): test1 = Bill(5) test2 = Bill(5) test3 = Bill(6) self.assertEqual(test1, test2) self.assertNotEqual(test2, test3)
def test_if_bills_are_equal(self): a = Bill(10) b = Bill(9) c = Bill(10) self.assertTrue(a != b) self.assertTrue(a == c)
def test_if___eq___dunder_works_correctly(self): b1 = Bill(1) b2 = Bill(2) b3 = Bill(1) self.assertFalse(b1 == b2) self.assertTrue(b1 == b3)
def test_cashdesk_take_only_batch(self): desk = CashDesk() batch = BillBatch([Bill(10), Bill(5)]) desk.take_money(batch) self.assertEqual(desk.total(), 15)
def test_cashdesk_take_only_bills(self): desk = CashDesk() desk.take_money(Bill(10)) desk.take_money(Bill(5)) self.assertEqual(desk.total(), 15)
def test_total_amount_of_all_bills_in_the_batch(self): Bill.money_holder = {} a = Bill(10) b = Bill(20) batch = BatchBill([a, b]) self.assertEqual(batch.total(), 30)
def test_counting_the_numbers_of_bills_in_the_batch(self): Bill.money_holder = {} a = Bill(10) b = Bill(20) batch = BatchBill([a, b]) self.assertEqual(len(batch), 2)
def test_getting_item_from_list_of_bills(self): Bill.money_holder = {} a = Bill(10) b = Bill(20) batch = BatchBill([a, b]) self.assertEqual(batch[0], a)
def test_cashdesk_take_money_works_as_expected_with_empty_desk_and_billbatch( self): cash_desk = CashDesk() bill_batch = BillBatch([Bill(10), Bill(15)]) cash_desk.take_money(bill_batch) self.assertEqual(cash_desk.cash, {Bill(10): 1, Bill(15): 1})
def test_cashdesk_take_money_works_as_expected_with_one_type_of_bill_in_desk( self): cash_desk = CashDesk() test1 = Bill(10) test2 = Bill(10) cash_desk.take_money(test1) cash_desk.take_money(test2) self.assertEqual(cash_desk.cash, {test2: 2})
def test_billbatch_len_dunder_calculates_length_of_batchbill_as_expected( self): bills1 = [Bill(5), Bill(3), Bill(1)] bills2 = [] test1 = BillBatch(bills1) test2 = BillBatch(bills2) self.assertEqual(len(test1), 3) self.assertEqual(len(test2), 0)
def test_inspect_function(self): values = [10, 20, 50, 100, 100, 100] bills = [Bill(value) for value in values] batch = BillBatch(bills) desk = CashDesk() desk.take_money(batch) desk.take_money(Bill(10)) desk.inspect()
def test_if_inspection_works(self): desk = CashDesk() ls = [10,20,50,100] bills = [Bill(value) for value in ls] batch = BillBatch(bills) desk.take_money(Bill(10)) desk.take_money(batch) desk.inspect()
def test_hash_function(self): money_holder = {} a = Bill(10) b = Bill(10) money_holder[a] = 1 if b in money_holder: money_holder[b] += 1 expexted = 2 self.assertEqual(expexted, money_holder[a])
def test_bill_hash_dunder_works_as_expected(self): test1 = Bill(5) test2 = Bill(5) money_holder = {} money_holder[test1] = 1 if test2 in money_holder: money_holder[test2] += 1 self.assertEqual(money_holder[test1], 2)
def test_cashdesk_total_works_as_expected_when_bill_appears_only_once( self): cash_desk = CashDesk() bill1 = Bill(5) bill2 = Bill(10) bill3 = Bill(20) cash_desk.take_money(bill1) cash_desk.take_money(bill2) cash_desk.take_money(bill3) self.assertEqual(cash_desk.total(), 35)
def test_if___stringify_works_correctly(self): bills = [Bill(i) for i in range(5)] batch = BatchBill(bills) cd = CashDesk() cd.take_money(batch) cd.take_money(Bill(1)) s = cd.stringify() self.assertEqual( s, "A 0$ bill - 1\nA 1$ bill - 2\nA 2$ bill - 1\nA 3$ bill - 1\nA 4$ bill - 1" )
def test_total_when_cash_desk_is_not_empty(self): values = [10, 20, 50, 100, 100, 100] bills = [Bill(value) for value in values] batch = BillBatch(bills) desk = CashDesk() desk.take_money(batch) desk.take_money(Bill(10)) result = desk.total() expexted = 390 self.assertEqual(result, expexted)
def test_if_bills_are_taken_from_desk(self): desk = CashDesk() ls = [10,20,50,100] bills = [Bill(value) for value in ls] batch = BillBatch(bills) desk.take_money(Bill(10)) desk.take_money(batch) self.assertEqual(str(desk[0]),'A 10$ bill.') self.assertEqual(str(desk[3]),'A 50$ bill.')
def test_billbatch_init_raises_exception_if_bills_is_not_of_type_list( self): exc = None bills = (Bill(5), Bill(3), Bill(1)) try: test = BillBatch(bills) except Exception as err: exc = err self.assertIsNotNone(exc) self.assertEqual(type(exc), TypeError) self.assertEqual(str(exc), 'Amount must be of type "list".')
def test_if_totall_sum_is_right(self): desk = CashDesk() exp = 190 ls = [10,20,50,100] bills = [Bill(value) for value in ls] batch = BillBatch(bills) desk.take_money(Bill(10)) desk.take_money(batch) res = desk.total() self.assertEqual(res, exp)
def test_inspect_with_full_desk(self): desk = CashDesk() desk.take_money(Bill(1)) desk.take_money(Bill(2)) desk.take_money(Bill(10)) expected = ["We have 13$ in the desk."] expected.append("Bills are:") expected.append("$1 - 1") expected.append("$2 - 1") expected.append("$10 - 1") self.assertEqual("\n".join(expected), desk.inspect())
def test_if_take_money_works_with_bill(self): bill = Bill(10) cd = CashDesk() cd.take_money(bill) res = 10 self.assertEqual(res, cd.total())
def test_total_amount_of_money_in_the_desk_with_bills(self): Bill.money_holder = {} a = Bill(10) b = Bill(20) c = Bill(30) desk = CashDesk() desk.take_money(a) desk.take_money(b) desk.take_money(c) total = desk.total() self.assertEqual(total, 60)
def test_if_batch_is_iterable_in_for_loop(self): ls = [10,20,50,100] bills = [Bill(value) for value in ls] batch = BillBatch(bills) self.assertTrue([i for i in batch])
def test_get_len_of_bill_batch(self): values = [10, 20, 50, 100] bills = [Bill(value) for value in values] batch = BillBatch(bills) self.assertEqual(len(batch), 4)
def test_int_function(self): a = Bill(10) result = int(a) expexted = 10 self.assertEqual(result, expexted)
def test_can_put_bill_in_dictionary(self): money_holder = {} bill = Bill(10) money_holder[bill] = 1 self.assertTrue(bill in money_holder)