summaryrefslogtreecommitdiff
path: root/src/main/java/au/id/zancanaro/javacheck/Generators.java
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@zancanaro.id.au>2015-06-01 12:47:05 +1000
committerCarlo Zancanaro <carlo@zancanaro.id.au>2015-06-01 12:47:05 +1000
commitfef70631f4d1be56d772816af22778efebcc8391 (patch)
tree5fc605e273b05c3aebae923a01ea44013a0be10e /src/main/java/au/id/zancanaro/javacheck/Generators.java
parent8187f024bae57267af514c5dcb730de09e573e41 (diff)
Fix up list shrinking, remove minor superfluous things
Diffstat (limited to 'src/main/java/au/id/zancanaro/javacheck/Generators.java')
-rw-r--r--src/main/java/au/id/zancanaro/javacheck/Generators.java24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/main/java/au/id/zancanaro/javacheck/Generators.java b/src/main/java/au/id/zancanaro/javacheck/Generators.java
index ec6a329..9ced818 100644
--- a/src/main/java/au/id/zancanaro/javacheck/Generators.java
+++ b/src/main/java/au/id/zancanaro/javacheck/Generators.java
@@ -81,13 +81,11 @@ public final class Generators {
}
public static <T> Generator<List<T>> listOf(Generator<T> gen) {
- return sized(size ->
- integer(0, size).flatMap(count -> {
- @SuppressWarnings("unchecked")
- Generator<T>[] gens = (Generator<T>[]) new Generator[count];
- Arrays.fill(gens, gen);
- return Generator.tuple(gens);
- })).fmap(Collections::unmodifiableList);
+ return (random, size) -> {
+ Generator<Integer> countGen = sized(s -> integer(0, s));
+ int count = countGen.generate(random, size).getValue();
+ return Generator.list(count, gen).generate(random, size);
+ };
}
public static Generator<Character> character() {
@@ -124,12 +122,14 @@ public final class Generators {
}
public static Generator<String> stringOf(Generator<Character> charGen) {
- return Generators.listOf(charGen).fmap(list -> {
- StringBuilder builder = new StringBuilder(list.size());
- for (Object c : list) {
- builder.append(c);
+ return listOf(charGen).fmap(list -> {
+ char[] chars = new char[list.size()];
+ int i = 0;
+ for (Character c : list) {
+ chars[i++] = c;
}
- return builder.toString();
+ return String.valueOf(chars);
+// return new String(chars);
});
}
}