blob: 29116c96510953506c4e2132300dd0ae45a098b7 [file] [log] [blame]
package ioc.specs
import org.apache.tapestry5.ioc.util.Stack
import spock.lang.Specification
class StackSpec extends Specification {
def stack = new Stack()
def "peek in empty stack is failure"() {
when:
stack.peek()
then:
IllegalStateException e = thrown()
e.message == "Stack is empty."
}
def "pop in empty stack is failure"() {
when:
stack.pop()
then:
IllegalStateException e = thrown()
e.message == "Stack is empty."
}
def "simple stack operations"() {
def fred = "fred"
def barney = "barney"
expect:
stack.empty
when:
stack.push fred
then:
stack.peek().is(fred)
!stack.empty
when:
stack.push barney
then:
stack.peek().is(barney)
stack.toString() == "Stack[barney, fred]"
stack.depth == 2
stack.snapshot.equals([fred, barney])
when:
def popped = stack.pop()
then:
popped.is barney
stack.peek().is(fred)
!stack.empty
when:
popped = stack.pop()
then:
popped.is fred
stack.empty
}
def "force the expansion of the inner data"() {
def limit = 1000
when:
limit.times { stack.push it }
then:
limit.downto(1) { stack.pop() == it - 1}
}
def "clear the stack"() {
10.times { stack.push it }
when:
stack.clear()
then:
stack.empty
}
}