[Test] public void Rotate_Iterator() { int[] array = new int[12]; array[0] = Int32.MinValue; array[array.Length - 1] = Int32.MinValue; for (int i = 1; i <= 10; ++i) { array[i] = i; } ListIterator <int> begin = new ListIterator <int>(array, 1); ListIterator <int> end = IteratorUtil.End(array); end.MovePrev(); ListIterator <int> newBeginIter = new ListIterator <int>(array, 4); Algorithm.Rotate(begin, newBeginIter, end); Assert.AreEqual(Int32.MinValue, array[0]); Assert.AreEqual(Int32.MinValue, array[array.Length - 1]); for (int i = 1, c = 4; i < 8; ++i, ++c) { Assert.AreEqual(c, array[i]); } for (int i = 8, c = 1; i < 11; ++i, ++c) { Assert.AreEqual(c, array[i]); } }
[Test] public void CopyBackward_Enumerable() { ListIterator <string> destIter = IteratorUtil.End(dest); destIter.MovePrev(); Algorithm.CopyBackward(src as IEnumerable <string>, destIter); Assert.AreEqual(dest[0], MARKER); Assert.AreEqual(dest[dest.Length - 1], MARKER); for (int i = 1; i < dest.Length - 1; ++i) { Assert.AreEqual(src[i - 1], dest[i]); } }
[Test] public void CopyBackward_List() { ListIterator <int> destIter = IteratorUtil.End(dest); destIter.MovePrev(); Algorithm.CopyBackward(src, destIter); Assert.AreEqual(dest[0], Int32.MinValue); Assert.AreEqual(dest[dest.Length - 1], Int32.MinValue); for (int i = 1; i < dest.Length - 1; ++i) { Assert.AreEqual(src[i - 1], dest[i]); } }
[Test] public void Generate_Iterator() { int[] array = new int[10]; ListIterator <int> begin = IteratorUtil.Begin(array); ListIterator <int> end = IteratorUtil.End(array); begin.MoveNext(); end.MovePrev(); Algorithm.Generate(begin, end, Generator); Assert.AreEqual(0, array[0]); Assert.AreEqual(0, array[array.Length - 1]); for (int i = 1; i < array.Length - 1; ++i) { Assert.AreEqual(42, array[i]); } }
[Test] public void Reverse_Iterator() { ListIterator <int> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); Algorithm.Copy(src, destIter); ListIterator <int> endIter = IteratorUtil.End(dest); endIter.MovePrev(); Algorithm.Reverse(destIter, endIter); Assert.AreEqual(dest[0], Int32.MinValue); Assert.AreEqual(dest[dest.Length - 1], Int32.MinValue); for (int i = 0; i < count; ++i) { Assert.AreEqual(src[i], dest[dest.Length - 2 - i]); } }
[Test] public void FillN_Iterator() { int[] array = new int[10]; ListIterator <int> begin = IteratorUtil.Begin(array); ListIterator <int> end = IteratorUtil.End(array); begin.MoveNext(); end.MovePrev(); OutputIterator <int> result = Algorithm.FillN(begin, 8, 42); Assert.AreEqual(0, array[0]); Assert.AreEqual(0, array[array.Length - 1]); for (int i = 1; i < array.Length - 1; ++i) { Assert.AreEqual(42, array[i]); } Assert.IsNotNull(result); Assert.IsInstanceOfType(typeof(ListIterator <int>), result); Assert.AreEqual(9, (result as ListIterator <int>).Position); }