using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
public static class Implementations
public static IEnumerable<string> GreenTea(int n)
for (int i = 1; i <= n; i++)
if (i % 3 == 0 && i % 5 == 0)
yield return i.ToString();
public static IEnumerable<T> FirstHalf<T>(this IEnumerable<T> tt)
int halfSize = tt.Count() / 2;
return tt.Take(halfSize);
public static void Main()
AssertGreenTeaIsCorrect(10, new string[]{"1", "2", "Green", "4", "Tea", "Green", "7", "8", "Green", "Tea"});
AssertGreenTeaIsCorrect(16, new string[]{"1", "2", "Green", "4", "Tea", "Green", "7", "8", "Green", "Tea", "11", "Green", "13", "14", "GreenTea", "16"});
AssertGreenTeaIsCorrect(0, new string[]{ });
AssertFirstHalfIsCorrect(new string [] { "North", "South", "East", "West" }, new string [] { "North", "South" });
AssertFirstHalfIsCorrect(new string [] { "red", "green", "blue" }, new string [] { "red" });
AssertFirstHalfIsCorrect(new string [] { }, new string [] { });
Console.WriteLine("All tests succeeded.");
public static void AssertGreenTeaIsCorrect(int n, IEnumerable<string> expected)
var result = Implementations.GreenTea(n);
Assert.IsTrue(expected.SequenceEqual(result));
public static void AssertFirstHalfIsCorrect(IEnumerable<string> tt, IEnumerable<string> expected)
var result = tt.FirstHalf();
Assert.IsTrue(expected.SequenceEqual(result));