public static int CountVowels(string s)
public static void Main()
Console.WriteLine("Task is done when all test cases are correct:");
TestReturnedValues(testCaseNumber++, "", 0);
TestReturnedValues(testCaseNumber++, " ", 0);
TestReturnedValues(testCaseNumber++, "a", 1);
TestReturnedValues(testCaseNumber++, "b", 0);
TestReturnedValues(testCaseNumber++, "ab", 1);
TestReturnedValues(testCaseNumber++, "ba", 1);
TestReturnedValues(testCaseNumber++, "aba", 2);
TestReturnedValues(testCaseNumber++, "bab", 1);
TestReturnedValues(testCaseNumber++, "aeiou", 5);
TestReturnedValues(testCaseNumber++, "bacedifoguh", 5);
TestReturnedValues(testCaseNumber++, "Lorem ipsum dolor sit amet", 9);
TestException<ArgumentNullException>(testCaseNumber++, null);
private static void TestReturnedValues(int testCaseNumber, string s, int expectedResult)
if (CountVowels(s) == expectedResult)
Console.WriteLine(correctCaseTemplate, testCaseNumber);
Console.WriteLine(incorrectCaseTemplate, testCaseNumber);
Console.WriteLine(correctCaseTemplate, testCaseNumber);
private static void TestException<T>(int testCaseNumber, string s) where T : Exception
Console.WriteLine(incorrectCaseTemplate, testCaseNumber);
catch (ArgumentException)
Console.WriteLine(correctCaseTemplate, testCaseNumber);
Console.WriteLine(incorrectCaseTemplate, testCaseNumber);
private static string correctCaseTemplate = "Case #{0} is correct.";
private static string incorrectCaseTemplate = "Case #{0} IS NOT CORRECT";
private static int correctTestCaseAmount = 0;