Exemple #1
0
        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]);
        }
Exemple #2
0
        [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]);
            }
        }
Exemple #3
0
        [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);
        }
Exemple #4
0
        [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);
        }
Exemple #5
0
        [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);
        }
Exemple #6
0
        [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);
        }
Exemple #7
0
        [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);
        }
Exemple #8
0
        [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);
        }
Exemple #9
0
        [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());
        }
Exemple #10
0
        [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());
        }
Exemple #11
0
        [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());
        }
Exemple #12
0
        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());
        }
Exemple #14
0
        [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());
        }
Exemple #15
0
        [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());
        }
Exemple #16
0
        [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);
        }
Exemple #17
0
        [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);
        }