Files
python/exercises/practice/collatz-conjecture/collatz_conjecture_test.py

40 lines
1.0 KiB
Python
Raw Normal View History

import unittest
from collatz_conjecture import (
steps,
)
2020-10-15 12:46:24 -04:00
# Tests adapted from `problem-specifications//canonical-data.json`
class CollatzConjectureTest(unittest.TestCase):
def test_zero_steps_for_one(self):
self.assertEqual(steps(1), 0)
def test_divide_if_even(self):
self.assertEqual(steps(16), 4)
def test_even_and_odd_steps(self):
self.assertEqual(steps(12), 9)
def test_large_number_of_even_and_odd_steps(self):
self.assertEqual(steps(1000000), 152)
def test_zero_is_an_error(self):
with self.assertRaises(ValueError) as err:
steps(0)
self.assertEqual(type(err.exception), ValueError)
self.assertEqual(err.exception.args[0], "Only positive numbers are allowed")
def test_negative_value_is_an_error(self):
with self.assertRaises(ValueError) as err:
steps(-15)
self.assertEqual(type(err.exception), ValueError)
self.assertEqual(err.exception.args[0], "Only positive numbers are allowed")