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