summaryrefslogtreecommitdiff
path: root/src/main/java/au/id/zancanaro/javacheck/Generator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/au/id/zancanaro/javacheck/Generator.java')
-rw-r--r--src/main/java/au/id/zancanaro/javacheck/Generator.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main/java/au/id/zancanaro/javacheck/Generator.java b/src/main/java/au/id/zancanaro/javacheck/Generator.java
index 66ebf1b..55d06f8 100644
--- a/src/main/java/au/id/zancanaro/javacheck/Generator.java
+++ b/src/main/java/au/id/zancanaro/javacheck/Generator.java
@@ -1,5 +1,6 @@
package au.id.zancanaro.javacheck;
+import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.function.Function;
@@ -24,6 +25,17 @@ public interface Generator<T> {
};
}
+ static <T> Generator<List<T>> list(int count, Generator<T> gen) {
+ return (random, size) -> {
+ @SuppressWarnings("unchecked")
+ RoseTree<T>[] result = (RoseTree<T>[]) new RoseTree[count];
+ for (int i = 0; i < count; ++i) {
+ result[i] = gen.generate(random, size);
+ }
+ return RoseTree.shrink(Function.identity(), result);
+ };
+ }
+
default <R> Generator<R> fmap(Function<T, R> f) {
return (random, size) -> this.generate(random, size).fmap(f);
}