diff options
Diffstat (limited to 'guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java')
-rw-r--r-- | guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java | 88 |
1 files changed, 82 insertions, 6 deletions
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java b/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java index db19baa..987ae9c 100644 --- a/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java +++ b/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java @@ -16,11 +16,18 @@ package com.google.common.collect.testing.google; +import static com.google.common.base.Preconditions.checkNotNull; + import com.google.common.annotations.GwtCompatible; -import com.google.common.collect.BiMap; import com.google.common.collect.ImmutableBiMap; +import com.google.common.collect.Maps; +import com.google.common.collect.testing.SampleElements; +import com.google.common.collect.testing.TestMapEntrySetGenerator; +import com.google.common.collect.testing.TestStringSetGenerator; +import java.util.Map; import java.util.Map.Entry; +import java.util.Set; /** * Generators of various {@link com.google.common.collect.BiMap}s and derived @@ -31,13 +38,82 @@ import java.util.Map.Entry; */ @GwtCompatible public class BiMapGenerators { - public static class ImmutableBiMapGenerator extends TestStringBiMapGenerator { - @Override protected BiMap<String, String> create(Entry<String, String>[] entries) { - ImmutableBiMap.Builder<String, String> builder = ImmutableBiMap.builder(); + + public static class ImmutableBiMapKeySetGenerator + extends TestStringSetGenerator { + @Override protected Set<String> create(String[] elements) { + Map<String, Integer> map = Maps.newLinkedHashMap(); + for (int i = 0; i < elements.length; i++) { + map.put(elements[i], i); + } + return ImmutableBiMap.copyOf(map).keySet(); + } + } + + public static class ImmutableBiMapValuesGenerator + extends TestStringSetGenerator { + @Override protected Set<String> create(String[] elements) { + Map<Integer, String> map = Maps.newLinkedHashMap(); + for (int i = 0; i < elements.length; i++) { + map.put(i, elements[i]); + } + return ImmutableBiMap.copyOf(map).values(); + } + } + + public static class ImmutableBiMapInverseEntrySetGenerator + extends TestMapEntrySetGenerator<String, String> { + + public ImmutableBiMapInverseEntrySetGenerator() { + super(new SampleElements.Strings(), new SampleElements.Strings()); + } + @Override public Set<Entry<String, String>> createFromEntries( + Entry<String, String>[] entries) { + Map<String, String> map = Maps.newLinkedHashMap(); + for (Entry<String, String> entry : entries) { + checkNotNull(entry); + map.put(entry.getValue(), entry.getKey()); + } + return ImmutableBiMap.copyOf(map).inverse().entrySet(); + } + } + + public static class ImmutableBiMapInverseKeySetGenerator + extends TestStringSetGenerator { + @Override protected Set<String> create(String[] elements) { + Map<Integer, String> map = Maps.newLinkedHashMap(); + for (int i = 0; i < elements.length; i++) { + map.put(i, elements[i]); + } + return ImmutableBiMap.copyOf(map).inverse().keySet(); + } + } + + public static class ImmutableBiMapInverseValuesGenerator + extends TestStringSetGenerator { + @Override protected Set<String> create(String[] elements) { + Map<String, Integer> map = Maps.newLinkedHashMap(); + for (int i = 0; i < elements.length; i++) { + map.put(elements[i], i); + } + return ImmutableBiMap.copyOf(map).inverse().values(); + } + } + + public static class ImmutableBiMapEntrySetGenerator + extends TestMapEntrySetGenerator<String, String> { + + public ImmutableBiMapEntrySetGenerator() { + super(new SampleElements.Strings(), new SampleElements.Strings()); + } + @Override public Set<Entry<String, String>> createFromEntries( + Entry<String, String>[] entries) { + Map<String, String> map = Maps.newLinkedHashMap(); for (Entry<String, String> entry : entries) { - builder.put(entry.getKey(), entry.getValue()); + checkNotNull(entry); + map.put(entry.getKey(), entry.getValue()); } - return builder.build(); + return ImmutableBiMap.copyOf(map).entrySet(); } } } |