diff options
Diffstat (limited to 'guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java')
-rw-r--r-- | guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java | 248 |
1 files changed, 106 insertions, 142 deletions
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java b/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java index 0b55a2798..4e8273a98 100644 --- a/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java +++ b/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java @@ -44,6 +44,7 @@ import com.google.common.collect.testing.TestStringSetGenerator; import com.google.common.collect.testing.TestStringSortedSetGenerator; import com.google.common.collect.testing.TestUnhashableCollectionGenerator; import com.google.common.collect.testing.UnhashableObject; + import java.util.Arrays; import java.util.Collections; import java.util.Comparator; @@ -62,60 +63,13 @@ import java.util.SortedSet; public class SetGenerators { public static class ImmutableSetCopyOfGenerator extends TestStringSetGenerator { - @Override - protected Set<String> create(String[] elements) { + @Override protected Set<String> create(String[] elements) { return ImmutableSet.copyOf(elements); } } - public static class ImmutableSetUnsizedBuilderGenerator extends TestStringSetGenerator { - @Override - protected Set<String> create(String[] elements) { - ImmutableSet.Builder<String> builder = ImmutableSet.builder(); - for (String e : elements) { - builder.add(e); - } - return builder.build(); - } - } - - public static class ImmutableSetSizedBuilderGenerator extends TestStringSetGenerator { - @Override - protected Set<String> create(String[] elements) { - ImmutableSet.Builder<String> builder = - ImmutableSet.builderWithExpectedSize(Sets.newHashSet(elements).size()); - for (String e : elements) { - builder.add(e); - } - return builder.build(); - } - } - - public static class ImmutableSetTooBigBuilderGenerator extends TestStringSetGenerator { - @Override - protected Set<String> create(String[] elements) { - ImmutableSet.Builder<String> builder = - ImmutableSet.builderWithExpectedSize(Sets.newHashSet(elements).size() + 1); - for (String e : elements) { - builder.add(e); - } - return builder.build(); - } - } - - public static class ImmutableSetTooSmallBuilderGenerator extends TestStringSetGenerator { - @Override - protected Set<String> create(String[] elements) { - ImmutableSet.Builder<String> builder = - ImmutableSet.builderWithExpectedSize(Math.max(0, Sets.newHashSet(elements).size() - 1)); - for (String e : elements) { - builder.add(e); - } - return builder.build(); - } - } - - public static class ImmutableSetWithBadHashesGenerator extends TestCollidingSetGenerator + public static class ImmutableSetWithBadHashesGenerator + extends TestCollidingSetGenerator // Work around a GWT compiler bug. Not explicitly listing this will // cause the createArray() method missing in the generated javascript. // TODO: Remove this once the GWT bug is fixed. @@ -126,70 +80,80 @@ public class SetGenerators { } } - public static class DegeneratedImmutableSetGenerator extends TestStringSetGenerator { + public static class DegeneratedImmutableSetGenerator + extends TestStringSetGenerator { // Make sure we get what we think we're getting, or else this test // is pointless @SuppressWarnings("cast") - @Override - protected Set<String> create(String[] elements) { - return (ImmutableSet<String>) ImmutableSet.of(elements[0], elements[0]); + @Override protected Set<String> create(String[] elements) { + return (ImmutableSet<String>) + ImmutableSet.of(elements[0], elements[0]); } } - public static class ImmutableSortedSetCopyOfGenerator extends TestStringSortedSetGenerator { - @Override - protected SortedSet<String> create(String[] elements) { + public static class ImmutableSortedSetCopyOfGenerator + extends TestStringSortedSetGenerator { + @Override protected SortedSet<String> create(String[] elements) { return ImmutableSortedSet.copyOf(elements); } } - public static class ImmutableSortedSetHeadsetGenerator extends TestStringSortedSetGenerator { - @Override - protected SortedSet<String> create(String[] elements) { + public static class ImmutableSortedSetHeadsetGenerator + extends TestStringSortedSetGenerator { + @Override protected SortedSet<String> create(String[] elements) { List<String> list = Lists.newArrayList(elements); list.add("zzz"); - return ImmutableSortedSet.copyOf(list).headSet("zzy"); + return ImmutableSortedSet.copyOf(list) + .headSet("zzy"); } } - public static class ImmutableSortedSetTailsetGenerator extends TestStringSortedSetGenerator { - @Override - protected SortedSet<String> create(String[] elements) { + public static class ImmutableSortedSetTailsetGenerator + extends TestStringSortedSetGenerator { + @Override protected SortedSet<String> create(String[] elements) { List<String> list = Lists.newArrayList(elements); list.add("\0"); - return ImmutableSortedSet.copyOf(list).tailSet("\0\0"); + return ImmutableSortedSet.copyOf(list) + .tailSet("\0\0"); } } - public static class ImmutableSortedSetSubsetGenerator extends TestStringSortedSetGenerator { - @Override - protected SortedSet<String> create(String[] elements) { + public static class ImmutableSortedSetSubsetGenerator + extends TestStringSortedSetGenerator { + @Override protected SortedSet<String> create(String[] elements) { List<String> list = Lists.newArrayList(elements); list.add("\0"); list.add("zzz"); - return ImmutableSortedSet.copyOf(list).subSet("\0\0", "zzy"); + return ImmutableSortedSet.copyOf(list) + .subSet("\0\0", "zzy"); } } - @GwtIncompatible // NavigableSet - public static class ImmutableSortedSetDescendingGenerator extends TestStringSortedSetGenerator { - @Override - protected SortedSet<String> create(String[] elements) { - return ImmutableSortedSet.<String>reverseOrder().add(elements).build().descendingSet(); + @GwtIncompatible("NavigableSet") + public static class ImmutableSortedSetDescendingGenerator + extends TestStringSortedSetGenerator { + @Override protected SortedSet<String> create(String[] elements) { + return ImmutableSortedSet + .<String>reverseOrder() + .add(elements) + .build() + .descendingSet(); } } - public static class ImmutableSortedSetExplicitComparator extends TestStringSetGenerator { + public static class ImmutableSortedSetExplicitComparator + extends TestStringSetGenerator { - private static final Comparator<String> STRING_REVERSED = Collections.reverseOrder(); + private static final Comparator<String> STRING_REVERSED + = Collections.reverseOrder(); - @Override - protected SortedSet<String> create(String[] elements) { - return ImmutableSortedSet.orderedBy(STRING_REVERSED).add(elements).build(); + @Override protected SortedSet<String> create(String[] elements) { + return ImmutableSortedSet.orderedBy(STRING_REVERSED) + .add(elements) + .build(); } - @Override - public List<String> order(List<String> insertionOrder) { + @Override public List<String> order(List<String> insertionOrder) { Collections.sort(insertionOrder, Collections.reverseOrder()); return insertionOrder; } @@ -198,77 +162,82 @@ public class SetGenerators { public static class ImmutableSortedSetExplicitSuperclassComparatorGenerator extends TestStringSetGenerator { - private static final Comparator<Comparable<?>> COMPARABLE_REVERSED = Collections.reverseOrder(); + private static final Comparator<Comparable<?>> COMPARABLE_REVERSED + = Collections.reverseOrder(); - @Override - protected SortedSet<String> create(String[] elements) { - return new ImmutableSortedSet.Builder<String>(COMPARABLE_REVERSED).add(elements).build(); + @Override protected SortedSet<String> create(String[] elements) { + return new ImmutableSortedSet.Builder<String>(COMPARABLE_REVERSED) + .add(elements) + .build(); } - @Override - public List<String> order(List<String> insertionOrder) { + @Override public List<String> order(List<String> insertionOrder) { Collections.sort(insertionOrder, Collections.reverseOrder()); return insertionOrder; } } - public static class ImmutableSortedSetReversedOrderGenerator extends TestStringSetGenerator { + public static class ImmutableSortedSetReversedOrderGenerator + extends TestStringSetGenerator { - @Override - protected SortedSet<String> create(String[] elements) { + @Override protected SortedSet<String> create(String[] elements) { return ImmutableSortedSet.<String>reverseOrder() .addAll(Arrays.asList(elements).iterator()) .build(); } - @Override - public List<String> order(List<String> insertionOrder) { + @Override public List<String> order(List<String> insertionOrder) { Collections.sort(insertionOrder, Collections.reverseOrder()); return insertionOrder; } } - public static class ImmutableSortedSetUnhashableGenerator extends TestUnhashableSetGenerator { - @Override - public Set<UnhashableObject> create(UnhashableObject[] elements) { + public static class ImmutableSortedSetUnhashableGenerator + extends TestUnhashableSetGenerator { + @Override public Set<UnhashableObject> create( + UnhashableObject[] elements) { return ImmutableSortedSet.copyOf(elements); } } - public static class ImmutableSetAsListGenerator extends TestStringListGenerator { - @Override - protected List<String> create(String[] elements) { + public static class ImmutableSetAsListGenerator + extends TestStringListGenerator { + @Override protected List<String> create(String[] elements) { return ImmutableSet.copyOf(elements).asList(); } } - public static class ImmutableSortedSetAsListGenerator extends TestStringListGenerator { - @Override - protected List<String> create(String[] elements) { + public static class ImmutableSortedSetAsListGenerator + extends TestStringListGenerator { + @Override protected List<String> create(String[] elements) { Comparator<String> comparator = createExplicitComparator(elements); - ImmutableSet<String> set = ImmutableSortedSet.copyOf(comparator, Arrays.asList(elements)); + ImmutableSet<String> set = ImmutableSortedSet.copyOf( + comparator, Arrays.asList(elements)); return set.asList(); } } - public static class ImmutableSortedSetSubsetAsListGenerator extends TestStringListGenerator { - @Override - protected List<String> create(String[] elements) { + public static class ImmutableSortedSetSubsetAsListGenerator + extends TestStringListGenerator { + @Override protected List<String> create(String[] elements) { Comparator<String> comparator = createExplicitComparator(elements); - ImmutableSortedSet.Builder<String> builder = ImmutableSortedSet.orderedBy(comparator); + ImmutableSortedSet.Builder<String> builder + = ImmutableSortedSet.orderedBy(comparator); builder.add(BEFORE_FIRST); builder.add(elements); builder.add(AFTER_LAST); - return builder.build().subSet(BEFORE_FIRST_2, AFTER_LAST).asList(); + return builder.build().subSet(BEFORE_FIRST_2, + AFTER_LAST).asList(); } } - @GwtIncompatible // NavigableSet - public static class ImmutableSortedSetDescendingAsListGenerator extends TestStringListGenerator { - @Override - protected List<String> create(String[] elements) { + @GwtIncompatible("NavigableSet") + public static class ImmutableSortedSetDescendingAsListGenerator + extends TestStringListGenerator { + @Override protected List<String> create(String[] elements) { Comparator<String> comparator = createExplicitComparator(elements).reverse(); - return ImmutableSortedSet.orderedBy(comparator) + return ImmutableSortedSet + .orderedBy(comparator) .add(elements) .build() .descendingSet() @@ -276,11 +245,12 @@ public class SetGenerators { } } - public static class ImmutableSortedSetAsListSubListGenerator extends TestStringListGenerator { - @Override - protected List<String> create(String[] elements) { + public static class ImmutableSortedSetAsListSubListGenerator + extends TestStringListGenerator { + @Override protected List<String> create(String[] elements) { Comparator<String> comparator = createExplicitComparator(elements); - ImmutableSortedSet.Builder<String> builder = ImmutableSortedSet.orderedBy(comparator); + ImmutableSortedSet.Builder<String> builder + = ImmutableSortedSet.orderedBy(comparator); builder.add(BEFORE_FIRST); builder.add(elements); builder.add(AFTER_LAST); @@ -290,28 +260,28 @@ public class SetGenerators { public static class ImmutableSortedSetSubsetAsListSubListGenerator extends TestStringListGenerator { - @Override - protected List<String> create(String[] elements) { + @Override protected List<String> create(String[] elements) { Comparator<String> comparator = createExplicitComparator(elements); - ImmutableSortedSet.Builder<String> builder = ImmutableSortedSet.orderedBy(comparator); + ImmutableSortedSet.Builder<String> builder + = ImmutableSortedSet.orderedBy(comparator); builder.add(BEFORE_FIRST); builder.add(BEFORE_FIRST_2); builder.add(elements); builder.add(AFTER_LAST); builder.add(AFTER_LAST_2); - return builder - .build() - .subSet(BEFORE_FIRST_2, AFTER_LAST_2) - .asList() - .subList(1, elements.length + 1); + return builder.build().subSet(BEFORE_FIRST_2, + AFTER_LAST_2) + .asList().subList(1, elements.length + 1); } } public abstract static class TestUnhashableSetGenerator extends TestUnhashableCollectionGenerator<Set<UnhashableObject>> - implements TestSetGenerator<UnhashableObject> {} + implements TestSetGenerator<UnhashableObject> { + } - private static Ordering<String> createExplicitComparator(String[] elements) { + private static Ordering<String> createExplicitComparator( + String[] elements) { // Collapse equal elements, which Ordering.explicit() doesn't support, while // maintaining the ordering by first occurrence. Set<String> elementsPlus = Sets.newLinkedHashSet(); @@ -345,35 +315,31 @@ public class SetGenerators { } public static class ContiguousSetGenerator extends AbstractContiguousSetGenerator { - @Override - protected SortedSet<Integer> create(Integer[] elements) { + @Override protected SortedSet<Integer> create(Integer[] elements) { return checkedCreate(nullCheckedTreeSet(elements)); } } public static class ContiguousSetHeadsetGenerator extends AbstractContiguousSetGenerator { - @Override - protected SortedSet<Integer> create(Integer[] elements) { + @Override protected SortedSet<Integer> create(Integer[] elements) { SortedSet<Integer> set = nullCheckedTreeSet(elements); - int tooHigh = set.isEmpty() ? 0 : set.last() + 1; + int tooHigh = (set.isEmpty()) ? 0 : set.last() + 1; set.add(tooHigh); return checkedCreate(set).headSet(tooHigh); } } public static class ContiguousSetTailsetGenerator extends AbstractContiguousSetGenerator { - @Override - protected SortedSet<Integer> create(Integer[] elements) { + @Override protected SortedSet<Integer> create(Integer[] elements) { SortedSet<Integer> set = nullCheckedTreeSet(elements); - int tooLow = set.isEmpty() ? 0 : set.first() - 1; + int tooLow = (set.isEmpty()) ? 0 : set.first() - 1; set.add(tooLow); return checkedCreate(set).tailSet(tooLow + 1); } } public static class ContiguousSetSubsetGenerator extends AbstractContiguousSetGenerator { - @Override - protected SortedSet<Integer> create(Integer[] elements) { + @Override protected SortedSet<Integer> create(Integer[] elements) { SortedSet<Integer> set = nullCheckedTreeSet(elements); if (set.isEmpty()) { /* @@ -390,16 +356,14 @@ public class SetGenerators { } } - @GwtIncompatible // NavigableSet + @GwtIncompatible("NavigableSet") public static class ContiguousSetDescendingGenerator extends AbstractContiguousSetGenerator { - @Override - protected SortedSet<Integer> create(Integer[] elements) { + @Override protected SortedSet<Integer> create(Integer[] elements) { return checkedCreate(nullCheckedTreeSet(elements)).descendingSet(); } /** Sorts the elements in reverse natural order. */ - @Override - public List<Integer> order(List<Integer> insertionOrder) { + @Override public List<Integer> order(List<Integer> insertionOrder) { Collections.sort(insertionOrder, Ordering.natural().reverse()); return insertionOrder; } @@ -417,7 +381,7 @@ public class SetGenerators { assertEquals(elements.get(i) + 1, (int) elements.get(i + 1)); } Range<Integer> range = - elements.isEmpty() ? Range.closedOpen(0, 0) : Range.encloseAll(elements); + (elements.isEmpty()) ? Range.closedOpen(0, 0) : Range.encloseAll(elements); return ContiguousSet.create(range, DiscreteDomain.integers()); } } |