diff options
author | Carlo Zancanaro <carlo@zancanaro.id.au> | 2015-06-01 12:47:05 +1000 |
---|---|---|
committer | Carlo Zancanaro <carlo@zancanaro.id.au> | 2015-06-01 12:47:05 +1000 |
commit | fef70631f4d1be56d772816af22778efebcc8391 (patch) | |
tree | 5fc605e273b05c3aebae923a01ea44013a0be10e /src/main/java/au/id/zancanaro/javacheck/Generators.java | |
parent | 8187f024bae57267af514c5dcb730de09e573e41 (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.java | 24 |
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); }); } } |