Exemple #1
0
        public void Push(T item)
        {
            while (_firstStack.Count > 0 &&
                   IsLessThan(_firstStack.Peek(), item))
            {
                _secondStack.Push(_firstStack.Pop());
            }

            _firstStack.Push(item);

            while (_secondStack.Count > 0)
            {
                _firstStack.Push(_secondStack.Pop());
            }
        }
Exemple #2
0
        public void Should_Peek_Throw_If_Stack_Is_Empty()
        {
            //arrange
            var stack = new MyLinkedListStack <int>();

            //act
            Action act = () => stack.Peek();

            //assert
            act.ShouldThrow <InvalidOperationException>();
        }
Exemple #3
0
        public T Peek()
        {
            if (Count == 0)
            {
                throw new InvalidOperationException();
            }
            if (_secondStack.Count == 0)
            {
                RearangeStacks();
            }

            return(_secondStack.Peek());
        }
Exemple #4
0
        public void Should_Peek()
        {
            //arrange
            var stack = new MyLinkedListStack <int>();

            stack.Push(1);

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

            //assert
            stack.Count.ShouldBeEquivalentTo(1);
            result.ShouldBeEquivalentTo(1);
        }