import unittest
from FizzBuzzer import FizzBuzzer

class FizzBuzzerTests(unittest.TestCase):

    def test_one(self):
        self.assertEqual(1, FizzBuzzer().integer_to_fizzbuzz(1)) 

    def test_two(self):
        self.assertEqual(2, FizzBuzzer().integer_to_fizzbuzz(2)) 

    def test_three_prints_buzz(self):
        self.assertEqual('Fizz', FizzBuzzer().integer_to_fizzbuzz(3)) 

    def test_five_prints_buzz(self):
        self.assertEqual('Buzz', FizzBuzzer().integer_to_fizzbuzz(5)) 

    def test_multiple_of_three(self):
        self.assertEqual('Fizz', FizzBuzzer().integer_to_fizzbuzz(6)) 

    def test_multiple_of_five(self):
        self.assertEqual('Buzz', FizzBuzzer().integer_to_fizzbuzz(10)) 

    def test_divideble_by_three_and_five(self):
        self.assertEqual('FizzBuzz', FizzBuzzer().integer_to_fizzbuzz(15))

    def test_full_run(self):
        expected = (
            "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"
        )
        self.assertEqual(expected, FizzBuzzer().run())

if __name__ == '__main__':
    unittest.main()
