using System.Collections.Generic;
namespace Chernobyl.Collections.Generic
{
///
/// Tests the class.
///
public class LinkedEnumeratorTests : EnumerationTests
{
///
/// Initializes a new instance of the
/// class.
///
public LinkedEnumeratorTests()
: base(true)
{ }
public class LinkedFoobar : ILinkedEnumerable
{
public LinkedFoobar Next { get; set; }
public int Index { get; set; }
public IEnumerator GetLinkedEnumerator()
{
return new LinkedEnumerator(this, LinkedNextItem);
}
public IEnumerator GetEnumerator()
{
return GetLinkedEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetLinkedEnumerator();
}
static bool LinkedNextItem(LinkedFoobar current, out LinkedFoobar next)
{
next = current.Next;
return next != null;
}
}
protected override IEnumerable CreateSingleItemEnumerable()
{
return new LinkedFoobar();
}
protected override IEnumerable CreateManyItemEnumerable()
{
LinkedFoobar item6 = new LinkedFoobar { Index = 6, };
LinkedFoobar item5 = new LinkedFoobar { Index = 5, Next = item6};
LinkedFoobar item4 = new LinkedFoobar { Index = 4, Next = item5 };
LinkedFoobar item3 = new LinkedFoobar { Index = 3, Next = item4 };
LinkedFoobar item2 = new LinkedFoobar { Index = 2, Next = item3 };
LinkedFoobar item1 = new LinkedFoobar { Index = 1, Next = item2 };
LinkedFoobar item0 = new LinkedFoobar { Index = 0, Next = item1 };
_orderedItems = new[] { item0, item1, item2, item3, item4, item5, item6 };
return item0;
}
///
/// Returns the items created by
/// are expected to be in.
///
protected override IEnumerable OrderedItems
{
get { return _orderedItems; }
}
///
/// The backing field to .
///
IEnumerable _orderedItems;
}
}