public void TestInsert() { int[] array = new int[]{0,1,2,3,4,5,6}; Vector<int> v = new Vector<int>(array); // test insertion in the middle ListIterator<int> pos = new ListIterator<int>(v, 4); ListIterator<int> result = v.Insert(pos, 29); Assert.AreEqual(array.Length+1, v.Count); Assert.AreEqual(3, v[3]); Assert.AreEqual(29, v[4]); Assert.AreEqual(4, v[5]); Assert.AreEqual(29, result.Read()); v = new Vector<int>(array); v.Insert(4, 29); Assert.AreEqual(array.Length+1, v.Count); Assert.AreEqual(3, v[3]); Assert.AreEqual(29, v[4]); Assert.AreEqual(4, v[5]); // test insertion at the beginning v = new Vector<int>(array); result = v.Insert(v.Begin(), 29); Assert.AreEqual(array.Length+1, v.Count); Assert.AreEqual(29, v[0]); Assert.AreEqual(0, v[1]); Assert.AreEqual(1, v[2]); Assert.AreEqual(29, result.Read()); v = new Vector<int>(array); v.Insert(0, 29); Assert.AreEqual(29, v[0]); Assert.AreEqual(0, v[1]); Assert.AreEqual(1, v[2]); // test insertion at the end v = new Vector<int>(array); result = v.Insert(v.End(), 29); Assert.AreEqual(array.Length+1, v.Count); Assert.AreEqual(5, v[5]); Assert.AreEqual(6, v[6]); Assert.AreEqual(29, v[7]); Assert.AreEqual(29, result.Read()); v = new Vector<int>(array); v.Insert(v.Count, 29); Assert.AreEqual(5, v[5]); Assert.AreEqual(6, v[6]); Assert.AreEqual(29, v[7]); }
[Test] public void NthElement_Iterator_Comparison() { int[] copy = new int[src.Length]; Algorithm.Copy(src, copy); Array.Sort(copy); ListIterator <int> begin = IteratorUtil.Begin(src); ListIterator <int> end = IteratorUtil.End(src); ListIterator <int> nth = IteratorUtil.AdvanceCopy(begin, 4); int pivotValue = nth.Read(); Algorithm.NthElement(begin, nth, end, Functional.Compare); Assert.AreEqual(0, begin.Position); Assert.AreEqual(src.Length, end.Position); Assert.AreEqual(copy[4], src[4]); for (int i = 0; i < 4; ++i) { Assert.IsTrue(src[i] < src[4]); } for (int i = 5; i < src.Length; ++i) { Assert.IsTrue(src[i] >= src[4]); } }
[Test] public void MaxElement_IntIteratorComparer() { int[] array = Constants.TEST_INT_ARRAY; ListIterator <int> iter = Algorithm.MaxElement(IteratorUtil.Begin(array), IteratorUtil.End(array), Comparer <int> .Default); Assert.AreEqual(100, iter.Read()); Assert.AreEqual(10, iter.Position); }
[Test] public void MaxElement_IntListPredicate() { int[] array = Constants.TEST_INT_ARRAY; ListIterator <int> iter = Algorithm.MaxElement(array, Functional.Compare); Assert.AreEqual(100, iter.Read()); Assert.AreEqual(10, iter.Position); }
[Test] public void MinElement_StringIterator() { string[] array = Constants.TEST_STRING_ARRAY; ListIterator <string> iter = Algorithm.MinElement(IteratorUtil.Begin(array), IteratorUtil.End(array)); Assert.AreEqual("Bob", iter.Read()); Assert.AreEqual(9, iter.Position); }
[Test] public void MinElement_IntListPredicate() { int[] array = Constants.TEST_INT_ARRAY; ListIterator <int> iter = Algorithm.MinElement(array, LessThanInt); Assert.AreEqual(-17, iter.Read()); Assert.AreEqual(4, iter.Position); }
[Test] public void MinElement_IntListComparer() { int[] array = Constants.TEST_INT_ARRAY; ListIterator <int> iter = Algorithm.MinElement(array, Comparer <int> .Default); Assert.AreEqual(-17, iter.Read()); Assert.AreEqual(4, iter.Position); }
[Test] public void MaxElement_StringIteratorComparer() { string[] array = Constants.TEST_STRING_ARRAY; ListIterator <string> iter = Algorithm.MaxElement(IteratorUtil.Begin(array), IteratorUtil.End(array), Comparer <string> .Default); Assert.AreEqual("world", iter.Read()); Assert.AreEqual(1, iter.Position); }
[Test] public void RemoveCopyIf_List2List() { ListIterator <int> result = Algorithm.RemoveCopyIf(src, dest, Is29); VerifyListOutput(); Assert.IsNotNull(result); Assert.AreEqual(src.Length - 4, result.Position); Assert.AreEqual(Int32.MinValue, result.Read()); }
[Test] public void RemoveCopy_List2List_Comparer() { ListIterator <int> result = Algorithm.RemoveCopy(src, dest, 29, EqualityComparer <int> .Default); VerifyListOutput(); Assert.IsNotNull(result); Assert.AreEqual(src.Length - 4, result.Position); Assert.AreEqual(Int32.MinValue, result.Read()); }
[Test] public void AdjacentFind_ListIterator() { int[] array = Constants.TEST_INT_ARRAY; ListIterator <int> begin = IteratorUtil.Begin(array); ListIterator <int> iter = Algorithm.AdjacentFind(begin, IteratorUtil.End(array)); Assert.AreEqual(6, iter.Position); Assert.AreEqual(6, IteratorUtil.Distance(begin, iter)); Assert.AreEqual(array[6], iter.Read()); iter = Algorithm.AdjacentFind(IteratorUtil.Begin(array), IteratorUtil.End(array), EqualityComparer <int> .Default); Assert.AreEqual(6, iter.Position); Assert.AreEqual(array[6], iter.Read()); iter = Algorithm.AdjacentFind(IteratorUtil.Begin(array), IteratorUtil.End(array), AreEqual); Assert.AreEqual(6, iter.Position); Assert.AreEqual(array[6], iter.Read()); }
public void TestIteratorMethods() { int[] array = new int[]{-100,1,2,3,4,5,6,100}; Vector<int> v = new Vector<int>(array); Assert.AreEqual(0, v.Begin().Position); Assert.AreEqual(-100, v.Begin().Read()); Assert.AreEqual(array.Length, v.End().Position); ListIterator<int> last = v.End().OffsetBy(-1); Assert.AreEqual(array.Length-1, last.Position); Assert.AreEqual(100, last.Read()); }
[Test] public void UniqueCopy_Iterator() { ListIterator <string> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); ListIterator <string> result = Algorithm.UniqueCopy(IteratorUtil.Begin(src), IteratorUtil.End(src), destIter); VerifyOutput(); Assert.IsNotNull(result); Assert.AreEqual(6, result.Position); Assert.AreEqual(MARKER, result.Read()); }
[Test] public void RemoveCopyIf_List_ListIterator() { ListIterator <int> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); ListIterator <int> result = Algorithm.RemoveCopyIf(src, destIter, Is29); VerifyOutput(); Assert.IsNotNull(result); Assert.AreEqual(src.Length - 3, result.Position); Assert.AreEqual(Int32.MinValue, result.Read()); }
[Test] public void RemoveCopy_Comparer_ListIterator() { ListIterator <int> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); ListIterator <int> result = Algorithm.RemoveCopy(IteratorUtil.Begin(src), IteratorUtil.End(src), destIter, 29, EqualityComparer <int> .Default); VerifyOutput(); Assert.IsNotNull(result); Assert.AreEqual(src.Length - 3, result.Position); Assert.AreEqual(Int32.MinValue, result.Read()); }
[Test] public void MinElement_IntIteratorPredicate() { int[] array = Constants.TEST_INT_ARRAY; ListIterator <int> iter = Algorithm.MinElement(IteratorUtil.Begin(array), IteratorUtil.End(array), LessThanInt); Assert.AreEqual(-17, iter.Read()); Assert.AreEqual(4, iter.Position); RandomAccessIterator <int> beginR = IteratorUtil.Begin(array); RandomAccessIterator <int> endR = IteratorUtil.End(array); RandomAccessIterator <int> iterR = Algorithm.MinElement(beginR, endR, LessThanInt); Assert.AreEqual(4, ((ListIterator <int>)iterR).Position); ForwardIterator <int> beginF = IteratorUtil.Begin(array); ForwardIterator <int> endF = IteratorUtil.End(array); ForwardIterator <int> iterF = Algorithm.MinElement(beginF, endF, LessThanInt); Assert.AreEqual(4, ((ListIterator <int>)iterF).Position); }
[Test] public void MaxElement_IntIteratorPredicate() { int[] array = Constants.TEST_INT_ARRAY; ListIterator <int> iter = Algorithm.MaxElement(IteratorUtil.Begin(array), IteratorUtil.End(array), Functional.Compare); Assert.AreEqual(100, iter.Read()); Assert.AreEqual(10, iter.Position); RandomAccessIterator <int> beginR = IteratorUtil.Begin(array); RandomAccessIterator <int> endR = IteratorUtil.End(array); RandomAccessIterator <int> iterR = Algorithm.MaxElement(beginR, endR, Functional.Compare); Assert.AreEqual(10, ((ListIterator <int>)iterR).Position); ForwardIterator <int> beginF = IteratorUtil.Begin(array); ForwardIterator <int> endF = IteratorUtil.End(array); ForwardIterator <int> iterF = Algorithm.MaxElement(beginF, endF, Functional.Compare); Assert.AreEqual(10, ((ListIterator <int>)iterF).Position); }