public void Pop_WhenPoped_ShouldReturnTopElement()
        {
            // Arrange
            var stack = new Stack<int>();
            stack.Push(10);
            stack.Push(30);

            // Act
            var result = stack.Pop();

            // Assert
            Assert.AreEqual(1, stack.Count, "There should be only single item.");
            Assert.AreEqual(30, result, "Should return the top value.");
            Assert.AreEqual(10, stack.GetBackingList().GetHeadAndTail().Item1.Value, "Head should point to 10");
        }
        public void Push_LastPushedItem_ShouldBeTheTop()
        {
            // Arrange
            var stack = new Stack<int>();

            // Act
            stack.Push(10);
            stack.Push(20);
            stack.Push(30);

            // Assert
            Assert.AreEqual(3, stack.Count, "Should have 3 items in the stack.");
            Assert.AreEqual(30, stack.GetBackingList().ElementAt(0), "First element.");
            Assert.AreEqual(20, stack.GetBackingList().ElementAt(1), "Second element.");
            Assert.AreEqual(10, stack.GetBackingList().ElementAt(2), "Third element.");
        }
        public void Push_ItemShouldBeAdded_ToTheStack()
        {
            // Arrange
            var stack = new Stack<int>();

            // Act
            stack.Push(10);

            // Assert
            Assert.AreEqual(1, stack.Count, "There should be a single item in the list.");
            Assert.AreEqual(10, stack.GetBackingList().GetHeadAndTail().Item1.Value, "Head should be 10.");
        }