diff options
Diffstat (limited to 'src/main/java/au/id/zancanaro/javacheck/RoseTree.java')
-rw-r--r-- | src/main/java/au/id/zancanaro/javacheck/RoseTree.java | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/main/java/au/id/zancanaro/javacheck/RoseTree.java b/src/main/java/au/id/zancanaro/javacheck/RoseTree.java index 5a54d6f..c735b46 100644 --- a/src/main/java/au/id/zancanaro/javacheck/RoseTree.java +++ b/src/main/java/au/id/zancanaro/javacheck/RoseTree.java @@ -6,6 +6,7 @@ import java.util.*; import java.util.function.Function; import java.util.function.Predicate; +@SuppressWarnings("unused") public class RoseTree<T> { private final T value; private final Iterable<RoseTree<T>> children; @@ -49,14 +50,17 @@ public class RoseTree<T> { )); } - public static <T, R> RoseTree<R> zip(Function<List<T>, R> fn, RoseTree<T>[] trees) { - @SuppressWarnings("unchecked") - List<T> heads = new ArrayList(trees.length); + private static <T> List<T> makeHeadList(RoseTree<T>[] trees) { + List<T> heads = new ArrayList<>(trees.length); for (RoseTree<T> tree : trees) { heads.add(tree.getValue()); } + return heads; + } + + public static <T, R> RoseTree<R> zip(Function<List<T>, R> fn, RoseTree<T>[] trees) { return new RoseTree<>( - fn.apply(heads), + fn.apply(makeHeadList(trees)), () -> Iterators.mappingIterator( roses -> RoseTree.zip(fn, roses), RoseTree.permutations(trees))); @@ -76,13 +80,8 @@ public class RoseTree<T> { } public static <T, R> RoseTree<R> shrink(Function<List<T>, R> fn, RoseTree<T>[] trees) { - @SuppressWarnings("unchecked") - List<T> heads = new ArrayList(trees.length); - for (RoseTree<T> tree : trees) { - heads.add(tree.getValue()); - } return new RoseTree<>( - fn.apply(heads), + fn.apply(makeHeadList(trees)), () -> Iterators.mappingIterator( roses -> RoseTree.shrink(fn, roses), RoseTree.removeEach(trees))); |