Exemplo n.º 1
0
        public void Insert_RangeOfZeroElements_HasNoEffect()
        {
            var deque = new Deque <int>(new[] { 1, 2, 3 });

            deque.InsertRange(1, new int[] { });
            Assert.Equal(new[] { 1, 2, 3 }, deque);
        }
Exemplo n.º 2
0
        public void InsertEmptyRange_DoesNothing()
        {
            Deque <int> q = new Deque <int>(new[] { 1, 2, 3, 4, 5 });

            q.InsertRange(3, new int[] { });
            Assert.AreEqual(5, q.Count, "Deque should remember its items");
            Assert.IsTrue(q.SequenceEqual(new[] { 1, 2, 3, 4, 5 }), "Deque should remember its items");
        }
Exemplo n.º 3
0
        public void InsertRange_AtBack_MaintainsOrder()
        {
            Deque <int> q = new Deque <int>(new[] { 1, 2, 3, 4, 5 });

            q.InsertRange(5, new[] { 13, 17 });
            Assert.AreEqual(7, q.Count, "Deque should remember its items");
            Assert.IsTrue(q.SequenceEqual(new[] { 1, 2, 3, 4, 5, 13, 17 }), "Deque should remember its items");
        }
Exemplo n.º 4
0
        public void Deque_InsertRange_InsertsRange()
        {
            Deque <int> q = new Deque <int>();

            q.InsertRange(0, new[] { 13, 17 });
            Assert.AreEqual(2, q.Count, "Deque should remember its items");
            Assert.IsTrue(q.SequenceEqual(new[] { 13, 17 }), "Deque should remember its items");
        }
Exemplo n.º 5
0
        public void InsertMultiple_MakesRoomForNewElements()
        {
            var deque = new Deque <int>(new[] { 1, 2, 3 });

            deque.InsertRange(1, new[] { 7, 13 });
            Assert.Equal(new[] { 1, 7, 13, 2, 3 }, deque);
            Assert.Equal(5, deque.Capacity);
        }
Exemplo n.º 6
0
        public void Capacity_ResizeWhileSplit_MaintainsOrder()
        {
            Deque <int> q = new Deque <int>(4);

            q.InsertRange(0, new[] { 13, 17, 19 });
            q.Insert(0, 11);
            q.Add(23);
            Assert.IsTrue(q.SequenceEqual(new[] { 11, 13, 17, 19, 23 }), "Deque should remember its items");
        }
Exemplo n.º 7
0
        private void InsertTest(IReadOnlyCollection <int> initial, IReadOnlyCollection <int> items)
        {
            var totalCapacity = initial.Count + items.Count;

            for (int rotated = 0; rotated <= totalCapacity; ++rotated)
            {
                for (int index = 0; index <= initial.Count; ++index)
                {
                    // Calculate the expected result using the slower List<int>.
                    var result = new List <int>(initial);
                    for (int i = 0; i != rotated; ++i)
                    {
                        var item = result[0];
                        result.RemoveAt(0);
                        result.Add(item);
                    }
                    result.InsertRange(index, items);

                    // First, start off the deque with the initial items.
                    var deque = new Deque <int>(initial);

                    // Ensure there's enough room for the inserted items.
                    deque.Capacity += items.Count;

                    // Rotate the existing items.
                    for (int i = 0; i != rotated; ++i)
                    {
                        var item = deque[0];
                        deque.RemoveFromFront();
                        deque.AddToBack(item);
                    }

                    // Do the insert.
                    deque.InsertRange(index, items);

                    // Ensure the results are as expected.
                    Assert.Equal(result, deque);
                }
            }
        }