Fizz Buzz Wizz
23/09/2012 21:44
Kata completed in C# through TDD with NUnit.
Specification
For any given number, n, output Fizz, Buzz or Wizz (stacking) such that:
if n is a multiple of: | 3 | 5 | 10 |
then output: | Fizz | Buzz | Wizz |
Examples:
- 3 → Fizz
- 10 → BuzzWizz
- 15 → FizzBuzz
- 50 → FizzBuzzWizz
using NUnit.Framework; namespace FizzBuzzWizz { [TestFixture] class FizzBuzzWizz { [TestCase(3, "Fizz")] [TestCase(5, "Buzz")] [TestCase(10, "BuzzWizz")] [TestCase(6, "Fizz")] [TestCase(15, "FizzBuzz")] [TestCase(30, "FizzBuzzWizz")] [TestCase(50, "BuzzWizz")] public void Given_number_should_return_expected_string(int number, string expected) { Assert.That(GetFizzBuzzWizz(number), Is.EqualTo(expected)); } private static string GetFizzBuzzWizz(int i) { return GetFizz(i) + GetBuzz(i) + GetWizz(i); } private static string GetWizz(int i) { return IfDivisibleReturnString(i, 10, "Wizz"); } private static string GetBuzz(int i) { return IfDivisibleReturnString(i, 5, "Buzz"); } private static string GetFizz(int i) { return IfDivisibleReturnString(i, 3, "Fizz"); } private static string IfDivisibleReturnString(int dividend, int divisor, string s) { return dividend % divisor == 0 ? s : string.Empty; } } }
Confession: I tidied and very slightly refactored the code from the original; however, the tests and implementation remain the same.