using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnitTestSharp; using Dreadlock; namespace Dreadlock.UnitTesting { public class EdgeEnumeratorTests : TestFixture { public void Works() { int[] list = { 0, 1, 2, 3, 4, 5, }; var enumerable = new EdgeEnumerator(list); int trailingExpected = 0; int leadingExpected = 1; int loopCount = 0; foreach (var pair in enumerable) { CheckEqual(trailingExpected++ % 6, pair.Trailing); CheckEqual(leadingExpected++ % 6, pair.Leading); ++loopCount; } CheckEqual(list.Length, loopCount); } public void ZeroLength() { int[] list = { }; int loopCount = 0; foreach (var pair in new EdgeEnumerator(list)) { ++loopCount; } CheckEqual(0, loopCount); } public void OneLength() { int[] list = { 2, }; int loopCount = 0; foreach (var pair in new EdgeEnumerator(list)) { ++loopCount; } CheckEqual(1, loopCount); } public void RecursiveGenerics() { int[] list = { 0, 1, 2, 3, 4, 5 }; var edges = new EdgeEnumerator(list); var edgePairs = new EdgeEnumerator.Edge>(edges); int leading_leading = 2; int leading_trailing = 1; int trailing_leading = 1; int trailing_trailing = 0; int loopCount = 0; foreach (var edgePair in edgePairs) { CheckEqual(leading_leading++ % list.Length, edgePair.Leading.Leading); CheckEqual(leading_trailing++ % list.Length, edgePair.Leading.Trailing); CheckEqual(trailing_leading++ % list.Length, edgePair.Trailing.Leading); CheckEqual(trailing_trailing++ % list.Length, edgePair.Trailing.Trailing); ++loopCount; } CheckEqual(list.Length, loopCount); } } }