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; } }