def lambda_main(event, context) -> dict: change_amount = int(event['queryStringParameters']['change_amount']) return { 'statusCode': 200, 'body': json.dumps(changer.calculate(change_amount)) }
def cli_main() -> None: if __invalid_args(): raise Exception('Please provide a numeric argument') else: print(changer.calculate(int(sys.argv[1])))
def test_returns_multiple_coins_for_complex_cases(): assert changer.calculate(227) == [200, 20, 5, 2] assert changer.calculate(77) == [50, 20, 5, 2] assert changer.calculate(373) == [200, 100, 50, 20, 2, 1]
def test_passing_one_returns_a_single_penny(): assert changer.calculate(1) == [1]
def test_passing_zero_returns_an_empty_array(): assert changer.calculate(0) == []
def test_returns_three_coins_where_necessary(): assert changer.calculate(16) == [10, 5, 1] assert changer.calculate(23) == [20, 2, 1]
def test_passing_200_returns_a_single_2_pound_coin(): assert changer.calculate(200) == [200]
def test_returns_two_coins_where_necessary(): assert changer.calculate(3) == [2, 1] assert changer.calculate(11) == [10, 1]
def test_passing_100_returns_a_single_1_pound_coin(): assert changer.calculate(100) == [100]
def test_passing_50_returns_a_single_50p_coin(): assert changer.calculate(50) == [50]
def test_passing_10_returns_a_single_10p_coin(): assert changer.calculate(10) == [10]
def test_passing_five_returns_a_single_5p_coin(): assert changer.calculate(5) == [5]
def test_passing_two_returns_a_single_2p_coin(): assert changer.calculate(2) == [2]