Code:
public class OddEven { private const string s_Even = "Even"; private const string s_Odd = "Odd"; public string Convert(int number) { if (number % 2 == 0) return s_Even; if (IsPrimeNumber(number)) return number.ToString(); return s_Odd; } public string ConvertRange(int start, int end) { string result = string.Empty; for (int i = start; i <= end; i++) { result += Convert(i) + " "; } return result.Trim(); } private bool IsPrimeNumber(int number) { if (number == 1) return false; for (short i = 3; i <= Math.Sqrt(number); i += 2) { if (number % i == 0) return false; } return true; } }
Test:
[TestFixture] public class OddEvenTest { [TestCase(1, "Odd")] [TestCase(2, "Even")] [TestCase(3, "3")] [TestCase(4, "Even")] [TestCase(5, "5")] [TestCase(6, "Even")] [TestCase(7, "7")] [TestCase(8, "Even")] [TestCase(9, "Odd")] [TestCase(10, "Even")] public void SingleOddEvenTest(int number, string expected) { // arrange var oddEven = new OddEven(); // act string actual = oddEven.Convert(number); // assert Assert.AreEqual(expected, actual); } [Test] public void MultipleOddEvenTest() { // arrange var oddEven = new OddEven(); // act string actual = oddEven.ConvertRange(1, 10); // assert string expected = "Odd Even 3 Even 5 Even 7 Even Odd Even"; Assert.AreEqual(expected, actual); } }