From 189f8c49ca2c98df0428b6cf2285fa0ca344d342 Mon Sep 17 00:00:00 2001 From: mRcfps <1402491442@qq.com> Date: Sun, 18 Feb 2018 23:18:56 +0800 Subject: [PATCH 1/2] change: update tests to v1.2.0 * Test errors using `assertRaisesWithMessage` --- exercises/change/change_test.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/exercises/change/change_test.py b/exercises/change/change_test.py index 62da0dbab82..7d066074e23 100644 --- a/exercises/change/change_test.py +++ b/exercises/change/change_test.py @@ -2,8 +2,8 @@ from change import find_minimum_coins -# Tests adapted from `problem-specifications//canonical-data.json` @ v1.1.0 +# Tests adapted from `problem-specifications//canonical-data.json` @ v1.2.0 class ChangeTest(unittest.TestCase): def test_single_coin_change(self): @@ -37,13 +37,26 @@ def test_no_coins_make_0_change(self): self.assertEqual(find_minimum_coins(0, [1, 5, 10, 21, 25]), []) def test_error_testing_for_change_smaller_than_smallest_coin(self): - self.assertEqual(find_minimum_coins(3, [5, 10]), -1) + with self.assertRaisesWithMessage(ValueError): + find_minimum_coins(3, [5, 10]) def test_error_if_no_combination_can_add_up_to_target(self): - self.assertEqual(find_minimum_coins(94, [5, 10]), -1) + with self.assertRaisesWithMessage(ValueError): + find_minimum_coins(94, [5, 10]) def test_cannot_find_negative_change_values(self): - self.assertEqual(find_minimum_coins(-5, [1, 2, 5]), -1) + with self.assertRaisesWithMessage(ValueError): + find_minimum_coins(-5, [1, 2, 5]) + + # Utility functions + def setUp(self): + try: + self.assertRaisesRegex + except AttributeError: + self.assertRaisesRegex = self.assertRaisesRegexp + + def assertRaisesWithMessage(self, exception): + return self.assertRaisesRegex(exception, r".+") if __name__ == "__main__": From bbba5e60b2b1ab4056a145eb9712c3ae6f26763b Mon Sep 17 00:00:00 2001 From: mRcfps <1402491442@qq.com> Date: Sun, 18 Feb 2018 23:19:11 +0800 Subject: [PATCH 2/2] change: fix example to pass tests v1.1.0 --- exercises/change/example.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/change/example.py b/exercises/change/example.py index 895145fe575..edcffcad6f5 100644 --- a/exercises/change/example.py +++ b/exercises/change/example.py @@ -1,6 +1,6 @@ def find_minimum_coins(total_change, coins): if total_change < 0: - return -1 + raise ValueError("cannot find negative change values") min_coins_required = [1e9] * (total_change + 1) last_coin = [0]*(total_change + 1) min_coins_required[0] = 0 @@ -15,7 +15,7 @@ def find_minimum_coins(total_change, coins): last_coin[change] = change - coin min_coins_required[change] = final_result if min_coins_required[total_change] == 1e9: - return -1 + raise ValueError("no combination can add up to target") else: last_coin_value = total_change array = []