using System.Collections; using System.Collections.Generic; namespace Chernobyl.Collections.Generic.Hierarchy { /// /// An NUnit helper test fixture that is made to help with the creation of /// test fixtures which test and related /// tree types. /// public abstract class TreeEnumeratorTests : EnumerationTests { /// /// Initializes a new instance of the /// class. /// protected TreeEnumeratorTests() : base(true) { } /// /// A helper class that implements . /// This class gives base classes a common /// to test with. /// public class Foobar : ITreeEnumerable { public Foobar(int index) { Children = new List(); Index = index; } public int Index; public List Children { get; private set; } public IEnumerable DepthFirst { get { return new EnumeratorFactory( () => new DepthFirstEnumerator(this, foobar => foobar.Children.GetEnumerator())); } } public IEnumerable BreadthFirst { get { return new EnumeratorFactory( () => new BreadthFirstEnumerator(this, foobar => foobar.Children.GetEnumerator())); } } public IEnumerator GetEnumerator() { return DepthFirst.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } /// /// This method should return a new that can /// be iterated over exactly once. This method should create a new /// every time it is invoked and not reuse /// instances. /// protected override IEnumerable CreateSingleItemEnumerable() { return new Foobar(0); } protected override IEnumerable OrderedItems { get { return OrderedItemsValue; } } /// /// The backing property to . /// protected IEnumerable OrderedItemsValue { get; set; } } }