-
-
Notifications
You must be signed in to change notification settings - Fork 65
/
MyStringStackProperties.java
40 lines (31 loc) · 1.19 KB
/
MyStringStackProperties.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package net.jqwik.docs.stateful.mystack;
import net.jqwik.api.*;
import net.jqwik.api.constraints.*;
import net.jqwik.api.stateful.*;
import org.assertj.core.api.*;
class MyStringStackProperties {
@Property(tries = 20, afterFailure = AfterFailureMode.SAMPLE_FIRST)
void checkMyStack(@ForAll("sequences") @Size(max = 10) ActionSequence<MyStringStack> actions) {
actions.run(new MyStringStack());
}
@Provide
Arbitrary<ActionSequence<MyStringStack>> sequences() {
return Arbitraries.sequences(Arbitraries.oneOf(push(), pop(), clear()));
}
private Arbitrary<PushAction> push() {
return Arbitraries.strings().alpha().ofLength(5).map(PushAction::new);
}
private Arbitrary<Action<MyStringStack>> clear() {
return Arbitraries.constant(new ClearAction());
}
private Arbitrary<Action<MyStringStack>> pop() {
return Arbitraries.constant(new PopAction());
}
@Property
void checkMyStackWithInvariant(@ForAll("sequences") ActionSequence<MyStringStack> actions) {
actions
.withInvariant("greater", stack -> Assertions.assertThat(stack.size()).isGreaterThanOrEqualTo(0))
.withInvariant("less", stack -> Assertions.assertThat(stack.size()).isLessThan(5))
.run(new MyStringStack());
}
}