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:3510
then output:FizzBuzzWizz

Examples:

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.