/** * Ensure values {@code inputs} are unique (which avoids useless arguments) and sorted before creating the partition. */ public static <INPUT extends Comparable<INPUT>> Iterable<List<INPUT>> toUniqueAndSortedPartitions(Collection<INPUT> inputs, IntFunction<Integer> partitionSizeManipulations) { int partitionSize = partitionSizeManipulations.apply(PARTITION_SIZE_FOR_ORACLE); return Iterables.partition(toUniqueAndSortedList(inputs), partitionSize); }
@Test public void toUniqueAndSortedList_removes_duplicates() { assertThat(toUniqueAndSortedList(asList("A", "A", "A"))).containsExactly("A"); assertThat(toUniqueAndSortedList(asList("A", "C", "A"))).containsExactly("A", "C"); assertThat(toUniqueAndSortedList(asList("C", "C", "B", "B", "A", "N", "C", "A"))).containsExactly("A", "B", "C", "N"); }
@Test public void toUniqueAndSortedList_enforces_natural_order() { assertThat(toUniqueAndSortedList(asList("A", "B", "C"))).containsExactly("A", "B", "C"); assertThat(toUniqueAndSortedList(asList("B", "A", "C"))).containsExactly("A", "B", "C"); assertThat(toUniqueAndSortedList(asList("B", "C", "A"))).containsExactly("A", "B", "C"); }
@Test public void toUniqueAndSortedList_throws_NPE_if_arg_contains_a_null() { expectedException.expect(NullPointerException.class); toUniqueAndSortedList(asList("A", null, "C")); }
@Test public void toUniqueAndSortedList_throws_NPE_if_arg_is_a_set_containing_a_null() { expectedException.expect(NullPointerException.class); toUniqueAndSortedList(new HashSet<>(asList("A", (String) null, "C"))); }
@Test public void toUniqueAndSortedList_throws_NPE_if_arg_is_null() { expectedException.expect(NullPointerException.class); toUniqueAndSortedList(null); }
@Test public void toUniqueAndSortedList_removes_duplicates_and_apply_natural_order_of_any_Comparable() { assertThat( toUniqueAndSortedList(asList(myComparable(2), myComparable(5), myComparable(2), myComparable(4), myComparable(-1), myComparable(10)))) .containsExactly( myComparable(-1), myComparable(2), myComparable(4), myComparable(5), myComparable(10)); }
/** * Ensure values {@code inputs} are unique (which avoids useless arguments) and sorted before creating the partition. */ private static <INPUT extends Comparable<INPUT>> Iterable<List<INPUT>> toUniqueAndSortedPartitions(Collection<INPUT> inputs) { return Iterables.partition(toUniqueAndSortedList(inputs), PARTITION_SIZE_FOR_ORACLE); }
/** * Ensure values {@code inputs} are unique (which avoids useless arguments) and sorted before creating the partition. */ public static <INPUT extends Comparable<INPUT>> Iterable<List<INPUT>> toUniqueAndSortedPartitions(Collection<INPUT> inputs, IntFunction<Integer> partitionSizeManipulations) { int partitionSize = partitionSizeManipulations.apply(PARTITION_SIZE_FOR_ORACLE); return Iterables.partition(toUniqueAndSortedList(inputs), partitionSize); }