[Test] public void AdjacentFind_RandomIterator() { int[] array = Constants.TEST_INT_ARRAY; RandomAccessIterator <int> begin = IteratorUtil.Begin(array); RandomAccessIterator <int> end = IteratorUtil.End(array); RandomAccessIterator <int> iter = Algorithm.AdjacentFind(begin, end); 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, IteratorUtil.Distance(begin, iter)); Assert.AreEqual(array[6], iter.Read()); iter = Algorithm.AdjacentFind(IteratorUtil.Begin(array), IteratorUtil.End(array), AreEqual); Assert.AreEqual(6, IteratorUtil.Distance(begin, iter)); Assert.AreEqual(array[6], iter.Read()); }
[Test] public void UniqueCopy_Comparer_RandomAccessIterator() { RandomAccessIterator <string> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); RandomAccessIterator <string> result = Algorithm.UniqueCopy(IteratorUtil.Begin(src), IteratorUtil.End(src), destIter, EqualityComparer <string> .Default); VerifyOutput(); Assert.IsNotNull(result); Assert.AreEqual(6, result.Position); Assert.AreEqual(MARKER, result.Read()); }
[Test] public void UniqueCopy_List_RandomAccessIterator() { RandomAccessIterator <string> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); RandomAccessIterator <string> result = Algorithm.UniqueCopy(src, destIter); VerifyOutput(); Assert.IsNotNull(result); Assert.AreEqual(6, result.Position); Assert.AreEqual(MARKER, result.Read()); }
[Test] public void UniqueCopy_Predicate_RandomAccessIterator() { RandomAccessIterator <string> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); RandomAccessIterator <string> result = Algorithm.UniqueCopy(IteratorUtil.Begin(src), IteratorUtil.End(src), destIter, delegate(string lhs, string rhs) { return(lhs == rhs); }); VerifyOutput(); Assert.IsNotNull(result); Assert.AreEqual(6, result.Position); Assert.AreEqual(MARKER, result.Read()); }
[Test] public void RemoveCopyIf_List_RandomAccessIterator() { RandomAccessIterator <int> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); RandomAccessIterator <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_RandomAccessIterator() { RandomAccessIterator <int> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); RandomAccessIterator <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 UniqueCopy_RandomAccessIterator() { RandomAccessIterator <int> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); RandomAccessIterator <int> result = Algorithm.UniqueCopy(IteratorUtil.Begin(src), IteratorUtil.End(src), destIter); VerifyOutput(); Assert.IsNotNull(result); Assert.AreEqual(6, result.Position); Assert.AreEqual(Int32.MinValue, result.Read()); }
public static bool Equal <T>(RandomAccessIterator <T> begin, RandomAccessIterator <T> end, RandomAccessIterator <T> cmpBegin, RandomAccessIterator <T> cmpEnd, IComparer <T> comparer) { if (IteratorUtil.Distance(begin, end) != IteratorUtil.Distance(cmpBegin, cmpEnd)) { return(false); } for (; !begin.Equals(end) && !cmpBegin.Equals(cmpEnd); begin.MoveNext(), cmpBegin.MoveNext()) { T t1 = begin.Read(); T t2 = cmpBegin.Read(); if (comparer.Compare(t1, t2) != 0) { return(false); } } return(true); }