class TestFizzBuzz(unittest.TestCase): def setUp(self): self.game = FizzBuzz() self.fixture = ['1', '2', 'Fizz', '4', 'Buzz', 'Fizz', '7', '8', 'Fizz', 'Buzz', '11', \ 'Fizz', '13', '14', 'FizzBuzz', '16', '17', 'Fizz', '19', 'Buzz', 'Fizz', '22',\ '23', 'Fizz', 'Buzz', '26', 'Fizz', '28', '29', 'FizzBuzz', '31', '32', 'Fizz', '34',\ 'Buzz', 'Fizz', '37', '38', 'Fizz', 'Buzz', '41', 'Fizz', '43', '44', 'FizzBuzz',\ '46', '47', 'Fizz', '49', 'Buzz', 'Fizz', '52', '53', 'Fizz', 'Buzz', '56', 'Fizz', \ '58', '59', 'FizzBuzz', '61', '62', 'Fizz', '64', 'Buzz', 'Fizz', '67', '68', 'Fizz',\ 'Buzz', '71', 'Fizz', '73', '74', 'FizzBuzz', '76', '77', 'Fizz', '79', 'Buzz', 'Fizz',\ '82', '83', 'Fizz', 'Buzz', '86', 'Fizz', '88', '89', 'FizzBuzz', '91', '92', 'Fizz',\ '94', 'Buzz', 'Fizz', '97', '98', 'Fizz', 'Buzz'] def test_fixtures(self): """ Test if the default case return the expected output with a fixture """ self.assertEqual(self.game.numbers, self.fixture) def test_say_numbers_returns_always_string(self): """ Test if all the returned bytes are strings :return: """ for i in range(1, 100): self.assertIsInstance(self.game._say_number(i), str) def test_replaced_by_three(self): """ Test if the replaced are being doing well :return: """ for i in range(1, 100): if i % 15 == 0: self.assertEqual(self.game._say_number(i), self.game.fifteen) elif i % 3 == 0: self.assertEqual(self.game._say_number(i), self.game.three) elif i % 5 == 0: self.assertEqual(self.game._say_number(i), self.game.five) else: self.assertEqual(self.game._say_number(i), str(i))