using System.Collections;
using System.Collections.Generic;
public static int[] Filter(int[] source)
return Array.Empty<int>();
public static void Main()
Console.WriteLine("Task is done when all test cases are correct:");
TestReturnedValues(testCaseNumber++, new int[] { }, new int[] { });
TestReturnedValues(testCaseNumber++, new int[] { 0 }, new int[] { 0 });
TestReturnedValues(testCaseNumber++, new int[] { 0, 1}, new int[] { 0, 1 });
TestReturnedValues(testCaseNumber++, new int[] { 0, 0}, new int[] { });
TestReturnedValues(testCaseNumber++, new int[] { 0, 1, 0}, new int[] { 1 });
TestReturnedValues(testCaseNumber++, new int[] { 0, 1, 0, 1 }, new int[] { });
TestReturnedValues(testCaseNumber++, new int[] { 0, 1, 2, 2, 5, 4, 4, 5, 1, 8, 4, 9, 1, 3, 4, 5, 7 }, new int[] { 0, 8, 9, 3, 7 });
TestException<ArgumentNullException>(testCaseNumber++, null);
if (correctTestCaseAmount == testCaseNumber - 1)
Console.WriteLine("Task is done.");
Console.WriteLine("TASK IS NOT DONE.");
private static void TestReturnedValues(int testCaseNumber, int[] array, int[] expectedResult)
var result = Filter(array);
if (result.SequenceEqual(expectedResult))
Console.WriteLine(correctCaseTemplate, testCaseNumber);
Console.WriteLine(incorrectCaseTemplate, testCaseNumber);
Console.WriteLine(correctCaseTemplate, testCaseNumber);
private static void TestException<T>(int testCaseNumber, int[] array) where T : Exception
Console.WriteLine(incorrectCaseTemplate, testCaseNumber);
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;