public void RemoveFirst_SeveralElements_ShouldRemoveElementsCorrectly()
        {
            // Arrange
            var list = new DoublyLinkedList <int>();

            list.AddLast(5);
            list.AddLast(6);
            list.AddLast(7);

            // Act
            var element = list.RemoveFirst();

            // Assert
            Assert.Equal(5, element);
            Assert.Equal(2, list.Count);

            var items = new List <int>();

            list.ForEach(items.Add);
            Assert.Equal(items, new List <int> {
                6, 7
            });
        }
        public void IEnumerable_NonGeneric_MultipleElements()
        {
            // Arrange
            var list = new DoublyLinkedList <object>();

            list.AddLast("Five");
            list.AddLast(6);
            list.AddLast(7.77);

            // Act
            var enumerator = ((IEnumerable)list).GetEnumerator();
            var items      = new List <object>();

            while (enumerator.MoveNext())
            {
                items.Add(enumerator.Current);
            }

            // Assert
            Assert.Equal(items, new List <object>()
            {
                "Five", 6, 7.77
            });
        }
        public void ForEach_SingleElement_ShouldEnumerateElementsCorrectly()
        {
            // Arrange
            var list = new DoublyLinkedList <int>();

            list.AddLast(5);

            // Act
            var items = new List <int>();

            list.ForEach(items.Add);

            // Assert
            Assert.Equal(items, new List <int> {
                5
            });
        }
        public void AddLast_EmptyList_ShouldAddElement()
        {
            // Arrange
            var list = new DoublyLinkedList <int>();

            // Act
            list.AddLast(5);

            // Assert
            Assert.Equal(1, list.Count);

            var items = new List <int>();

            list.ForEach(items.Add);
            Assert.Equal(items, new List <int> {
                5
            });
        }
        public void RemoveFirst_OneElement_ShouldMakeListEmpty()
        {
            // Arrange
            var list = new DoublyLinkedList <int>();

            list.AddLast(5);

            // Act
            var element = list.RemoveFirst();

            // Assert
            Assert.Equal(5, element);
            Assert.Equal(0, list.Count);

            var items = new List <int>();

            list.ForEach(items.Add);
            Assert.Equal(items, new List <int> {
            });
        }