public void Enumerator_CollectionWasChanged_ExceptionExpected()
        {
            QueueN <int> q = new QueueN <int>(1);

            for (int i = 0; i < 10; i++)
            {
                q.Push(i);
            }
            Assert.Throws(typeof(InvalidOperationException),
                          () =>
            {
                foreach (var el in q)
                {
                    q.Pop();
                }
            });
            Assert.Throws(typeof(InvalidOperationException),
                          () =>
            {
                foreach (var el in q)
                {
                    q.Push(el);
                }
            });
        }
        public void Count_intArray_CountExpected(int[] data)
        {
            //act
            QueueN <int> q = new QueueN <int>(data);

            //assert
            Assert.AreEqual(data.Length, q.Count);
        }
        public void Front_ExceptionExpected()
        {
            //arrange
            QueueN <int> q = new QueueN <int>();

            //assert
            Assert.Throws(typeof(InvalidOperationException), () => q.Front());
        }
        public void QueueNCtor_EnumerableObjects_EnumerableQueueExpected
            (object[] expectedElements)
        {
            //act
            QueueN <object> q = new QueueN <object>(expectedElements);

            //assert
            CollectionAssert.AreEquivalent(q, expectedElements);
        }
        public void QueueNCtor_EnumerableInt_EnumerableQueueExpected
            (int[] expectedElements)
        {
            //act
            QueueN <int> q = new QueueN <int>(expectedElements, 2);

            //assert
            CollectionAssert.AreEquivalent(expectedElements, q);
        }
        public void Push_intArray_QueueWithElementsExpected
            (int[] data)
        {
            //arrange
            QueueN <int> q = new QueueN <int>(1);

            //act
            for (int i = 0; i < data.Length; i++)
            {
                q.Push(data[i]);
            }
            //assert
            CollectionAssert.AreEquivalent(data, q);
        }
        public void CopyTo_ArrayExpected
            (int[] data, int[] destination, int index, int[] expectedArray)
        {
            //arrange
            QueueN <int> q = new QueueN <int>(1);

            for (int i = 0; i < data.Length; i++)
            {
                q.Push(data[i]);
            }
            //act
            q.CopyTo(destination, index);
            //assert
            CollectionAssert.AreEqual(expectedArray, destination);
        }
        public void PushFrontPop_intArray_RightOrderOfElementsExpected
            (int[] data)
        {
            //arrange
            QueueN <int> q = new QueueN <int>(2);

            //act
            for (int i = 0; i < data.Length; i++)
            {
                q.Push(data[i]);
            }
            //assert
            for (int i = 0; i < data.Length; i++)
            {
                int actual = q.Front();
                Assert.AreEqual(data[i], actual);
                q.Pop();
            }
            Assert.AreEqual(true, q.Empty, "queue is not empty, but should be");
        }