Skip to content

Instantly share code, notes, and snippets.

@gatukgl
Created July 30, 2014 14:51
Show Gist options
  • Save gatukgl/c441cac38c1d5666ae0b to your computer and use it in GitHub Desktop.
Save gatukgl/c441cac38c1d5666ae0b to your computer and use it in GitHub Desktop.
import unittest
class FizzBuzzTest(unittest.TestCase):
def setUp(self):
self.fizzbuzz = FizzBuzz()
def test_number_indivisible_by_3_or_5_should_return_number(self):
result = self.fizzbuzz.take(1)
self.assertEqual(result, 1)
result = self.fizzbuzz.take(2)
self.assertEqual(result, 2)
def test_number_divisible_by_3_should_return_fizz(self):
result = self.fizzbuzz.take(3)
self.assertEqual(result, 'fizz')
result = self.fizzbuzz.take(6)
self.assertEqual(result, 'fizz')
def test_number_divisible_by_5_should_return_buzz(self):
result = self.fizzbuzz.take(5)
self.assertEqual(result, 'buzz')
result = self.fizzbuzz.take(10)
self.assertEqual(result, 'buzz')
def test_number_divisible_by_3_and_5_should_return_fizzbuzz(self):
result = self.fizzbuzz.take(15)
self.assertEqual(result, 'fizzbuzz')
result = self.fizzbuzz.take(30)
self.assertEqual(result, 'fizzbuzz')
class FizzBuzz:
def take(self, number):
result = ''
is_fizz = {
True: 'fizz',
False: ''
}
result = is_fizz[number % 3 == 0]
is_buzz = {
True: 'buzz',
False: ''
}
result += is_buzz[number % 5 == 0]
is_not_fizzbuzz = {
'fizz': 'fizz',
'buzz': 'buzz',
'fizzbuzz': 'fizzbuzz',
'': number
}
result = is_not_fizzbuzz[result]
return result
if __name__ == "__main__":
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment