I've just started to learn testing, and have following problem.My method takes IEnumerable<int>
parameter and returns same.Basically, it is method for merging two sorted arrays/lists
but since I'm reading values from files, I don't want to use unnecessary memory for creating list or array
so I have decided to use IEnumerable
. I have one method which reads file and converts all the numbers that finds in file into integers
and returns IEnumerable<int>
. So the following method use that result and merge those sorted integers.
public static IEnumerable<int> GetSortedIntegers(IEnumerable<int> first , IEnumerable<int> second)
{
var item1 = first.GetEnumerator();
var item2 = second.GetEnumerator();
bool item1HasNext = item1.MoveNext();
bool item2HasNext = item2.MoveNext();
while (item1HasNext && item2HasNext)
{
if (item1.Current > item2.Current)
{
yield return item2.Current;
item2HasNext = item2.MoveNext();
}
else if(item1.Current == item2.Current)
{
yield return item2.Current;
item2HasNext = item2.MoveNext();
item1HasNext = item1.MoveNext();
}
else
{
yield return item1.Current;
item1HasNext = item1.MoveNext();
}
}
while (item1.MoveNext())
{
yield return item1.Current;
}
while (item2.MoveNext())
{
yield return item2.Current;
}
}
I want to test functionality of this method and create test cases using Nunit
, but I don't know what collection should I create for testing purpose.Idea is to do something like following :
[Test]
public static void GetSortedIntegersTest()
{
var first = new List<int>() { 0 };
var second = new List<int>() { 1, 2 };
var expected = new List<int>{ 0, 1, 2 };
var actual = GetSortedIntegers(first, second);
CollectionAssert.AreEqual(expected, actual);
}
Thank you for Your advice.