public void Deque_Constructor_Collection(int count)
 {
     var elements = new TestDequeElement[count];
     for (var i = 0; i < count; i++)
     {
         elements[i] = new TestDequeElement
         {
             Value =  i
         };
     }
     var deque = new Deque<TestDequeElement>(elements);
     Assert.IsTrue(deque.Count == count);
     Assert.IsTrue(deque.Capacity == count);
     for (var index = 0; index < deque.Count; index++)
     {
         Assert.IsTrue(deque[index].Value == index); 
     }
 }
 public void Deque_Trim_And_Clear(int count)
 {
     var elements = new TestDequeElement[count];
     for (var i = 0; i < count; i++)
     {
         elements[i] = new TestDequeElement
         {
             Value = i
         };
     }
     var deque = new Deque<TestDequeElement>(elements);
     deque.Clear();
     deque.TrimExcess();
     Assert.IsTrue(deque.Count == 0);
     Assert.IsTrue(deque.Capacity == 0);
 }
 public void Deque_Constructor_Capacity(int capacity)
 {
     var deque = new Deque<TestDequeElement>(capacity);
     Assert.IsTrue(deque.Count == 0);
     Assert.IsTrue(deque.Capacity == capacity);
 }
 public void Deque_Remove(int count)
 {
     var elements = new TestDequeElement[count];
     for (var i = 0; i < count; i++)
     {
         elements[i] = new TestDequeElement
         {
             Value = i
         };
     }
     var deque = new Deque<TestDequeElement>(elements);
     var counter = count;
     while (deque.Count > 0)
     {
         var index = _random.Next(0, deque.Count - 1);
         deque.RemoveAt(index);
         counter--;
         Assert.IsTrue(deque.Count == counter);
     }
 }
 public void Deque_Get_Index(int count)
 {
     var elements = new TestDequeElement[count];
     for (var i = 0; i < count; i++)
     {
         elements[i] = new TestDequeElement
         {
             Value = i
         };
     }
     var deque = new Deque<TestDequeElement>(elements);
     var indices = Enumerable.Range(0, count).ToList().Shuffle(_random);
     foreach (var index in indices)
     {
         TestDequeElement element;
         deque.Get(index, out element);
         Assert.IsTrue(element.Value == index);
     }
 }
 public void Deque_ForEach_Iteration_Modified(int count)
 {
     var elements = new TestDequeElement[count];
     for (var i = 0; i < count; i++)
     {
         elements[i] = new TestDequeElement
         {
             Value = i
         };
     }
     var deque = new Deque<TestDequeElement>(elements);
     var counter = 0;
     foreach (var element in deque)
     {
         Assert.IsTrue(element.Value == counter);
         counter++;
         deque.RemoveFromFront();
     }
 }
 public void Deque_Get_Back(int count)
 {
     var elements = new TestDequeElement[count];
     for (var i = 0; i < count; i++)
     {
         elements[i] = new TestDequeElement
         {
             Value = i
         };
     }
     var deque = new Deque<TestDequeElement>(elements);
     var indices = Enumerable.Range(0, count);
     foreach (var index in indices)
     {
         TestDequeElement element;
         deque.GetBack(out element);
         deque.RemoveFromBack();
         Assert.IsTrue(element.Value == count - 1 - index);
     }
 }
 public void Deque_Constructor_Default()
 {
     var deque = new Deque<object>();
     Assert.IsTrue(deque.Count == 0);
     Assert.IsTrue(deque.Capacity == 0);
 }
        public void Deque_Remove_Back(int count)
        {
            var elements = new TestDequeElement[count];
            for (var i = 0; i < count; i++)
            {
                elements[i] = new TestDequeElement
                {
                    Value = i
                };
            }
            var deque = new Deque<TestDequeElement>(elements);

            TestDequeElement element;
            var index = 0;
            while (deque.RemoveFromBack(out element))
            {
                Assert.IsTrue(element.Value == elements.Length - 1 - index);
                index++;
            }
        }
 public void Deque_Add_Back(int count)
 {
     var deque = new Deque<TestDequeElement>();
     for (var i = 0; i < count; i++)
     {
         deque.AddToBack(new TestDequeElement
         {
             Value = i
         });
     }
     Assert.IsTrue(deque.Count == count);
     Assert.IsTrue(deque.Capacity >= count);
     for (var index = 0; index < deque.Count; index++)
     {
         var element = deque[index];
         Assert.IsTrue(element.Value == index);
     }
 }
        public void Deque_Trim_Back(int count)
        {
            var elements = new TestDequeElement[count];
            for (var i = 0; i < count; i++)
            {
                elements[i] = new TestDequeElement
                {
                    Value = i
                };
            }
            var deque = new Deque<TestDequeElement>(elements);

            for (var i = 0; i < count; i++)
            {
                TestDequeElement element;
                deque.RemoveFromBack(out element);
                deque.Capacity = deque.Count;
                Assert.IsTrue(deque.Count == count - 1 - i);
                Assert.IsTrue(deque.Capacity == count - 1 - i);
            }
        }