def test_cash_money_some_denominations_needed(self): self.assertDictEqual({ 50: 1, 10: 1, 5: 1, 1: 1, 0.25: 2, 0.01: 3 }, cash_money(66.53))
def test_cash_money_all_currency(self): actual = cash_money(188.41) expected = { 100: 1, 50: 1, 20: 1, 10: 1, 5: 1, 2: 1, 1: 1, 0.25: 1, 0.1: 1, 0.05: 1, 0.01: 1 } self.assertEqual(expected, actual)
def test_cash_money_7_cents_is_a_nickel_and_2_pennies(self): self.assertDictEqual({0.05: 1, 0.01: 2}, cash_money(0.07))
def test_cash_money_int_is_ok(self): self.assertDictEqual({100: 1}, cash_money(100))
def test_cash_money_less_than_zero_raises_error(self): with self.assertRaises(ValueError): cash_money(-1.00)
def test_cash_money_not_float(self, mock_stdout): cash_money("Hi") actual = mock_stdout.getvalue() expected = "Error: '<' not supported between instances of 'str' and 'int'\n" self.assertEqual(expected, actual)
def test_cash_money_negative(self, mock_stdout): cash_money(-1.00) actual = mock_stdout.getvalue() expected = "Error: This is not a valid amount!\n" self.assertEqual(expected, actual)
def test_cash_money_only_tens(self): actual = cash_money(10.00) expected = {10: 1} self.assertEqual(expected, actual)
def test_cash_money_only_dimes(self): actual = cash_money(0.20) expected = {0.1: 2} self.assertEqual(expected, actual)
def test_cash_money_only_nickels(self): actual = cash_money(0.05) expected = {0.05: 1} self.assertEqual(expected, actual)
def test_cash_money_only_quarters(self): actual = cash_money(0.75) expected = {0.25: 3} self.assertEqual(expected, actual)
def test_cash_money_only_loonies(self): actual = cash_money(1.00) expected = {1: 1} self.assertEqual(expected, actual)
def test_cash_money_only_fives(self): actual = cash_money(5.00) expected = {5: 1} self.assertEqual(expected, actual)
def test_cash_money_zero_provided(self): self.assertDictEqual({}, cash_money(0))
def test_cash_money_only_pennies(self): actual = cash_money(0.04) expected = {0.01: 4} self.assertEqual(expected, actual)
def test_cash_money_raises_error_if_argument_is_not_a_double(self): with self.assertRaises(TypeError): cash_money('foo')
def test_cash_money_only_twenties(self): actual = cash_money(20.00) expected = {20: 1} self.assertEqual(expected, actual)