using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
public static class Implementations
public static IList<string> GreenTea(int n)
var printedStrings = new List<string>();
string textToPrint = null;
textToPrint = string.Format("{0}Tea", textToPrint);
var result = textToPrint ?? i.ToString();
printedStrings.Add(result);
Console.WriteLine(result);
public static IEnumerable<T> FirstHalf<T>(this IEnumerable<T> tt)
var seqLength = tt.Count();
var halfLength = seqLength/2;
return tt.Take(halfLength);
public static void Main()
AssertGreenTeaIsCorrect(1020);
AssertGreenTeaIsCorrect(102);
AssertGreenTeaIsCorrect(10, new string [] { "1", "2", "Green", "4", "Tea", "Green", "7", "8", "Green", "Tea" });
AssertGreenTeaIsCorrect(4, new string [] { "1", "2", "Green", "4" });
AssertFirstHalfIsCorrect(new string [] { "North", "South", "East", "West" });
AssertFirstHalfIsCorrect(new string [] { "red", "green", "blue" });
AssertGreenTeaIsCorrect(15, new string [] { "1", "2", "Green", "4", "Tea", "Green", "7", "8", "Green", "Tea", "11", "Green", "13", "14", "GreenTea" });
Console.WriteLine("All tests succeeded.");
public static void AssertGreenTeaIsCorrect(int n, IEnumerable<string> expectedSequence = null)
var printedStrings = Implementations.GreenTea(n);
if(expectedSequence != null) {
Assert.IsTrue(printedStrings.SequenceEqual(expectedSequence));
public static void AssertFirstHalfIsCorrect(IEnumerable<string> tt)
var result = tt.FirstHalf().ToList();
var originalList = tt.ToList();
var length = tt.Count()/2;
var arrayExpectedLength = 0;
for(var i = 0; i < length; i++){
Assert.AreEqual(originalList[i], result[i], string.Format("The i item should be {0} not {1}", originalList[i], result[i]));
Assert.AreEqual(arrayExpectedLength, result.Count, string.Format("The half array length should be {0} not {1}", arrayExpectedLength, result.Count));