...
| Code Block |
|---|
// require(url:'http://code.google.com/p/instinct', jar:'instinct-0.1.5.jar')
// require(url:'http://geekscape.org/static/boost.html', jar:'boost-982.jar')
// require(groupId:'org.jmock', artifactId:'jmock', version:'2.2.0')
import com.googlecode.instinct.marker.annotate.*
import com.googlecode.instinct.runner.TextRunner
@Context
class AlmostEmptyFixedStackContext {
private stack
@BeforeSpecification
void initially() {
stack = new FixedStack()
stack.push 'anything'
assert !stack.isEmpty()
}
@Specification
void shouldRemainNotEmptyAfterPeek() {
stack.peek()
assert !stack.isEmpty()
}
@Specification
void shouldBecomeEmptyAfterPop() {
stack.pop()
assert stack.isEmpty()
}
}
class AlmostFullFixedStackContext {
private stack
@BeforeSpecification
void initially() {
stack = new FixedStack()
(1..<FixedStack.MAXSIZE).each{ x -> stack.push x }
assert !stack.isFull()
}
@Specification
void shouldBecomeFullAfterPush() {
stack.push 'anything'
assert stack.isFull()
}
}
class EmptyFixedStackContext extends GroovyTestCase {
private stack = new FixedStack()
@BeforeSpecification
void preConditions() {
assert stack.isEmpty()
}
@Specification
void shouldNoLongerBeEmptyAfterPush() {
stack.push 'anything'
assert !stack.isEmpty()
}
@Specification
void shouldComplainWhenSentPeek() {
shouldFail(StackUnderflowException) {
stack.peek()
}
}
@Specification
void shouldComplainWhenSentPop() {
shouldFail(StackUnderflowException) {
stack.pop()
}
}
}
class FullFixedStackContext extends GroovyTestCase {
private stack
@BeforeSpecification
void initially() {
stack = new FixedStack()
(1..FixedStack.MAXSIZE).each{ x -> stack.push x }
assert stack.isFull()
}
@Specification
void shouldRemainFullAfterPeek() {
stack.peek()
assert stack.isFull()
}
@Specification
void shouldNoLongerBeFullAfterPop() {
stack.pop()
assert !stack.isFull()
}
@Specification
void shouldComplainOnPush() {
shouldFail(StackOverflowException) {
stack.push 'anything'
}
}
}
class NonEmptyFixedStackContext {
private stack
@BeforeSpecification
void setUp() {
stack = new FixedStack()
('a'..'c').each{ x -> stack.push x }
assert !stack.isEmpty()
}
@Specification
void shouldAddToTheTopWhenSentPush() {
stack.push 'd'
assert stack.peek() == 'd'
}
@Specification
void shouldBeUnchangedWhenSentPushThenPop() {
stack.push 'anything'
stack.pop()
assert stack.peek() == 'c'
}
@Specification
void shouldReturnTheTopItemWhenSentPeek() {
assert stack.peek() == 'c'
}
@Specification
void shouldNotRemoveTheTopItemWhenSentPeek() {
assert stack.peek() == 'c'
assert stack.peek() == 'c'
}
@Specification
void shouldReturnTheTopItemWhenSentPop() {
assert stack.pop() == 'c'
}
@Specification
void shouldRemoveTheTopItemWhenSentPop() {
assert stack.pop() == 'c'
assert stack.pop() == 'b'
}
}
TextRunner.runContexts(
AlmostEmptyFixedStackContext,
AlmostFullFixedStackContext,
EmptyFixedStackContext,
FullFixedStackContext,
NonEmptyFixedStackContext
)
|
...
| Code Block |
|---|
// require(url:'http://code.google.com/p/instinct', jar:'instinct-0.1.5.jar') // require(url:'http://geekscape.org/static/boost.html', jar:'boost-982.jar') // require(groupId:'org.jmock', artifactId:'jmock', version:'2.2.0') import com.googlecode.instinct.marker.annotate.BeforeSpecification as initially import com.googlecode.instinct.marker.annotate.Specification as spec import static com.googlecode.instinct.runner.TextContextRunnerTextRunner.runContexts as check_specs_for class a_default_storer { def storer @initially void create_new_storer() { storer = new Storer() } private check_persist_and_reverse(value, reverseValueexpectedReverse) { storer.put(value) assert valuedef persisted == storer.get() assert reverseValuepersisted == value def reversed = storer.reverse assert reversed == expectedReverse } @spec def should_reverse_numbers() { check_persist_and_reverse 123.456, -123.456 } @spec def should_reverse_strings() { check_persist_and_reverse 'hello', 'olleh' } @spec def should_reverse_lists() { check_persist_and_reverse([1, 3, 5], [5, 3, 1]) } } check_specs_for a_default_storer |
...