private static void TestRange(IterationData itdata)
        {
            var ienum = new IndexesEnumerator(itdata.End, itdata.Start, itdata.Reverse);

            RecursiveArrayEnumerator.Iterate(
                null, itdata.Start, itdata.End, new IndexesEnumeratorTestAction(ienum).Iterate, itdata.Reverse);
        }
 private static IterationData ToReverse(IterationData itdata)
 {
     return new IterationData(
         IndexesHelper.Add(itdata.End, -1),
         IndexesHelper.Add(itdata.Start, -1),
         !itdata.Reverse);
 }
 public void TestRange(
     [Values(new[] { 0 },
         new[] { 10258 },
         new[] { 0, 0 },
         new[] { 100, 1560 },
         new[] { 0, 0, 0 },
         new[] { 12000, 15000, 158220 },
         new[] { 0, 0, 0, 0 },
         new[] { 30, 300, 3000, 30000 })] int[] start,
     [Values(new[] { 125 },
         new[] { 11169 },
         new[] { 150, 17 },
         new[] { 320, 1587 },
         new[] { 49, 17, 9 },
         new[] { 12010, 15015, 158270 },
         new[] { 10, 7, 12, 18 },
         new[] { 35, 317, 3002, 30018 })]int[] end)
 {
     var itdata = new IterationData(start, end);
     TestRange(itdata);
     TestRange(ToReverse(itdata));
 }