public void Increment()
{
int currentRank = _Target.Rank - 1;
int currentRankIndex = Index[currentRank];
while (currentRank >= 0)
{
int upperBound = _Target.GetUpperBound(currentRank);
currentRankIndex = Index[currentRank];
if (currentRankIndex >= upperBound)
{
if(currentRank == 0)
throw new IndexOutOfRangeException();
Index[currentRank] = 0;
currentRank--;
}
else
break;
}
Index[currentRank] = currentRankIndex + 1;
}
ArrayIndex::Increment ( int number ) : void |
public void IncrementMultiple() { var idx = new ArrayIndex(new int[] { 1, 2, 3, 4, 5 }); idx.Increment(3); Assert.IsTrue(idx.Index.SequenceEqual(new int[] { 3 })); Assert.Throws <IndexOutOfRangeException>(() => { idx.Increment(5); }); Assert.IsTrue(idx.Index.SequenceEqual(new int[] { 3 })); }