Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions exercises/collatz-conjecture/collatz_conjecture_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

from collatz_conjecture import collatz_steps

# Tests adapted from `problem-specifications//canonical-data.json` @ v1.1.1

# Tests adapted from `problem-specifications//canonical-data.json` @ v1.2.0

class CollatzConjectureTests(unittest.TestCase):

Expand All @@ -20,12 +20,22 @@ def test_large_number_of_even_and_odd_steps(self):
self.assertEqual(collatz_steps(1000000), 152)

def test_zero_is_invalid_input(self):
self.assertEqual(collatz_steps(0), None)
with self.assertRaisesWithMessage(ValueError):
collatz_steps(0)

def test_negative_number_is_invalid_input(self):
self.assertEqual(collatz_steps(-1), None)

self.assertEqual(collatz_steps(-15), None)
with self.assertRaisesWithMessage(ValueError):
collatz_steps(-15)

# 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__':
Expand Down
2 changes: 1 addition & 1 deletion exercises/collatz-conjecture/example.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
def collatz_steps(n):
if n <= 0:
return
raise ValueError("input should be positive")

step_count = 0
while n > 1:
Expand Down