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.