[Test] public void UniqueCopy_List_Predicate_RandomAccessIterator() { RandomAccessIterator <string> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); RandomAccessIterator <string> result = Algorithm.UniqueCopy(src, destIter, delegate(string lhs, string rhs) { return(lhs == rhs); }); VerifyOutput(); Assert.IsNotNull(result); Assert.AreEqual(6, result.Position); Assert.AreEqual(MARKER, (result as ListIterator <string>).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 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()); }
[Test] public void UniqueCopy_List_Comparer_RandomAccessIterator() { RandomAccessIterator <int> destIter = IteratorUtil.Begin(dest); destIter.MoveNext(); RandomAccessIterator <int> result = Algorithm.UniqueCopy(src, destIter, EqualityComparer <int> .Default); VerifyOutput(); Assert.IsNotNull(result); Assert.AreEqual(6, result.Position); Assert.AreEqual(Int32.MinValue, (result as ListIterator <int>).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); }
static public void RandomShuffle <T>(RandomAccessIterator <T> begin, RandomAccessIterator <T> end, RandomShuffleFunc func) { if (begin.Equals(end)) { return; } begin = IteratorUtil.Clone(begin); for (RandomAccessIterator <T> iter = IteratorUtil.AdvanceCopy(begin, 1); !iter.Equals(end); iter.MoveNext()) { begin.Position = func(iter.Position + 1); IteratorUtil.Swap(iter, begin); } }