public void Push_InputIsValid_AddObjectToTheStack()
        {
            var stack = new TestNinja.Fundamentals.Stack <string>();

            stack.Push("a");

            Assert.That(stack.Count, Is.EqualTo(1));
        }
        public void Peek_StackWithObjects_ReturnObjectOnTheTop()
        {
            // arrange
            var stack = new TestNinja.Fundamentals.Stack <string>();

            stack.Push("a"); stack.Push("b"); stack.Push("c");

            // act
            var result = stack.Peek();

            //assert
            Assert.That(result, Is.EqualTo("c"));
        }
        public void Pop_StackWithObject_RemoveObjectOnTheTop()
        {
            // arrange
            var stack = new TestNinja.Fundamentals.Stack <string>();

            stack.Push("a"); stack.Push("b"); stack.Push("c");

            // act
            stack.Pop();

            //assert
            Assert.That(stack.Count, Is.EqualTo(2));
        }
        public void Peek_EmptyStack_ThrowInvalidOperationException()
        {
            var stack = new TestNinja.Fundamentals.Stack <string>();

            Assert.That(() => stack.Peek(), Throws.InvalidOperationException);
        }
        public void Push_InputIsNull_ThrowArgumentNullException()
        {
            var stack = new TestNinja.Fundamentals.Stack <string>();

            Assert.That(() => stack.Push(null), Throws.ArgumentNullException);
        }
        public void Count_EmptyStack_ReturnZero()
        {
            var stack = new TestNinja.Fundamentals.Stack <string>();

            Assert.That(stack.Count, Is.EqualTo(0));
        }