@Override protected List<TestSuite> createDerivedSuites( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Entry<K, V>>> parentBuilder) { // TODO: Once invariant support is added, supply invariants to each of the // derived suites, to check that mutations to the derived collections are // reflected in the underlying map. List<TestSuite> derivedSuites = super.createDerivedSuites(parentBuilder); if (parentBuilder.getFeatures().contains(CollectionFeature.SERIALIZABLE)) { derivedSuites.add( MultimapTestSuiteBuilder.using( new ReserializedMultimapGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeReserializedMultimapFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + " reserialized") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite()); } derivedSuites.add( MapTestSuiteBuilder.using(new AsMapGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeAsMapFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".asMap") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite()); derivedSuites.add(computeEntriesTestSuite(parentBuilder)); derivedSuites.add(computeMultimapGetTestSuite(parentBuilder)); derivedSuites.add(computeMultimapAsMapGetTestSuite(parentBuilder)); derivedSuites.add(computeKeysTestSuite(parentBuilder)); derivedSuites.add(computeValuesTestSuite(parentBuilder)); return derivedSuites; }
public static <K, V, M extends Multimap<K, V>> MultimapTestSuiteBuilder<K, V, M> using( TestMultimapGenerator<K, V, M> generator) { return new MultimapTestSuiteBuilder<K, V, M>().usingGenerator(generator); }
static Set<Feature<?>> computeEntriesFeatures(Set<Feature<?>> multimapFeatures) { Set<Feature<?>> result = computeDerivedCollectionFeatures(multimapFeatures); if (multimapFeatures.contains(MapFeature.ALLOWS_NULL_ENTRY_QUERIES)) { result.add(CollectionFeature.ALLOWS_NULL_QUERIES); } return result; }
private static Test transformSuite() { TestSuite suite = new TestSuite("Multimaps.transform*"); suite.addTest( MultimapTestSuiteBuilder.using( new TransformedMultimapGenerator<Multimap<String, String>>() { @Override .named("Multimaps.transformValues[Multimap]") .withFeatures( CollectionSize.ANY, MapFeature.SUPPORTS_REMOVE, MapFeature.ALLOWS_NULL_KEYS, MapFeature.ALLOWS_ANY_NULL_QUERIES) .createTestSuite()); suite.addTest( MultimapTestSuiteBuilder.using( new TransformedMultimapGenerator<Multimap<String, String>>() { @Override .named("Multimaps.transformEntries[Multimap]") .withFeatures( CollectionSize.ANY, MapFeature.SUPPORTS_REMOVE, MapFeature.ALLOWS_NULL_KEYS, MapFeature.ALLOWS_ANY_NULL_QUERIES) .createTestSuite()); suite.addTest( ListMultimapTestSuiteBuilder.using(
@GwtIncompatible // suite public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest( ListMultimapTestSuiteBuilder.using(new ImmutableListMultimapGenerator()) .named("ImmutableListMultimap") .withFeatures(ALLOWS_ANY_NULL_QUERIES, SERIALIZABLE, KNOWN_ORDER, CollectionSize.ANY) .createTestSuite()); suite.addTest( ListMultimapTestSuiteBuilder.using(new ImmutableListMultimapCopyOfEntriesGenerator()) .named("ImmutableListMultimap.copyOf[Iterable<Entry>]") .withFeatures(ALLOWS_ANY_NULL_QUERIES, SERIALIZABLE, KNOWN_ORDER, CollectionSize.ANY) .createTestSuite()); suite.addTestSuite(ImmutableListMultimapTest.class); return suite; }
TestSuite computeKeysTestSuite( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Entry<K, V>>> parentBuilder) { return MultisetTestSuiteBuilder.using( new KeysGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeKeysFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".keys") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite(); }
TestSuite computeEntriesTestSuite( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Entry<K, V>>> parentBuilder) { return CollectionTestSuiteBuilder.using( new EntriesGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeEntriesFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".entries") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite(); }
public static Test suite() { TestSuite suite = new TestSuite(); suite.addTestSuite(SynchronizedMultimapTest.class); suite.addTest( SetMultimapTestSuiteBuilder.using( new TestStringSetMultimapGenerator() { @Override protected SetMultimap<String, String> create(Entry<String, String>[] entries) { TestMultimap<String, String> inner = new TestMultimap<>(); SetMultimap<String, String> outer = Synchronized.setMultimap(inner, inner.mutex); for (Entry<String, String> entry : entries) { outer.put(entry.getKey(), entry.getValue()); } return outer; } }) .named("Synchronized.setMultimap") .withFeatures( MapFeature.GENERAL_PURPOSE, CollectionSize.ANY, CollectionFeature.SERIALIZABLE, CollectionFeature.SUPPORTS_ITERATOR_REMOVE, MapFeature.ALLOWS_NULL_KEYS, MapFeature.ALLOWS_NULL_VALUES, MapFeature.ALLOWS_ANY_NULL_QUERIES) .createTestSuite()); return suite; }
private static Test transformSuite() { TestSuite suite = new TestSuite("Multimaps.transform*"); suite.addTest(MultimapTestSuiteBuilder.using( new TransformedMultimapGenerator<Multimap<String,String>>() { @Override .named("Multimaps.transformValues[Multimap]") .withFeatures( CollectionSize.ANY, MapFeature.SUPPORTS_REMOVE, MapFeature.ALLOWS_NULL_KEYS, MapFeature.ALLOWS_ANY_NULL_QUERIES) .createTestSuite()); suite.addTest(MultimapTestSuiteBuilder.using( new TransformedMultimapGenerator<Multimap<String,String>>() { @Override .named("Multimaps.transformEntries[Multimap]") .withFeatures( CollectionSize.ANY, MapFeature.SUPPORTS_REMOVE, MapFeature.ALLOWS_NULL_KEYS, MapFeature.ALLOWS_ANY_NULL_QUERIES) .createTestSuite()); suite.addTest(ListMultimapTestSuiteBuilder.using(new TransformedListMultimapGenerator() { @Override .withFeatures(
TestSuite computeKeysTestSuite( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Map.Entry<K, V>>> parentBuilder) { return MultisetTestSuiteBuilder.using( new KeysGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeKeysFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".keys") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite(); }
TestSuite computeEntriesTestSuite( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Entry<K, V>>> parentBuilder) { return CollectionTestSuiteBuilder.using( new EntriesGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeEntriesFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".entries") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite(); }
@Override protected List<TestSuite> createDerivedSuites( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Entry<K, V>>> parentBuilder) { // TODO: Once invariant support is added, supply invariants to each of the // derived suites, to check that mutations to the derived collections are // reflected in the underlying map. List<TestSuite> derivedSuites = super.createDerivedSuites(parentBuilder); if (parentBuilder.getFeatures().contains(CollectionFeature.SERIALIZABLE)) { derivedSuites.add( MultimapTestSuiteBuilder.using( new ReserializedMultimapGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeReserializedMultimapFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + " reserialized") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite()); } derivedSuites.add( MapTestSuiteBuilder.using(new AsMapGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeAsMapFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".asMap") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite()); derivedSuites.add(computeEntriesTestSuite(parentBuilder)); derivedSuites.add(computeMultimapGetTestSuite(parentBuilder)); derivedSuites.add(computeMultimapAsMapGetTestSuite(parentBuilder)); derivedSuites.add(computeKeysTestSuite(parentBuilder)); derivedSuites.add(computeValuesTestSuite(parentBuilder)); return derivedSuites; }
@GwtIncompatible // suite public static Test suite() { TestSuite suite = new TestSuite(); suite.addTestSuite(ImmutableSetMultimapTest.class); suite.addTest( SetMultimapTestSuiteBuilder.using(new ImmutableSetMultimapGenerator()) .named("ImmutableSetMultimap") .withFeatures(ALLOWS_ANY_NULL_QUERIES, KNOWN_ORDER, SERIALIZABLE, CollectionSize.ANY) .createTestSuite()); suite.addTest( SetMultimapTestSuiteBuilder.using(new ImmutableSetMultimapCopyOfEntriesGenerator()) .named("ImmutableSetMultimap.copyOf[Iterable<Entry>]") .withFeatures(ALLOWS_ANY_NULL_QUERIES, KNOWN_ORDER, SERIALIZABLE, CollectionSize.ANY) .createTestSuite()); return suite; }
public static <K, V, M extends Multimap<K, V>> MultimapTestSuiteBuilder<K, V, M> using( TestMultimapGenerator<K, V, M> generator) { return new MultimapTestSuiteBuilder<K, V, M>().usingGenerator(generator); }
static Set<Feature<?>> computeValuesFeatures(Set<Feature<?>> multimapFeatures) { Set<Feature<?>> result = computeDerivedCollectionFeatures(multimapFeatures); if (multimapFeatures.contains(MapFeature.ALLOWS_NULL_VALUES)) { result.add(CollectionFeature.ALLOWS_NULL_VALUES); } if (multimapFeatures.contains(MapFeature.ALLOWS_NULL_VALUE_QUERIES)) { result.add(CollectionFeature.ALLOWS_NULL_QUERIES); } return result; }
TestSuite computeKeysTestSuite( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Entry<K, V>>> parentBuilder) { return MultisetTestSuiteBuilder.using( new KeysGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeKeysFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".keys") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite(); }
TestSuite computeEntriesTestSuite( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Map.Entry<K, V>>> parentBuilder) { return CollectionTestSuiteBuilder.using( new EntriesGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeEntriesFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".entries") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite(); }
derivedSuites.add(MultimapTestSuiteBuilder.using( new ReserializedMultimapGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeReserializedMultimapFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + " reserialized") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite()); .withFeatures(computeAsMapFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".asMap") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite()); derivedSuites.add(computeEntriesTestSuite(parentBuilder)); derivedSuites.add(computeMultimapGetTestSuite(parentBuilder)); derivedSuites.add(computeMultimapAsMapGetTestSuite(parentBuilder)); derivedSuites.add(computeKeysTestSuite(parentBuilder)); derivedSuites.add(computeValuesTestSuite(parentBuilder));
@GwtIncompatible // suite public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest( ListMultimapTestSuiteBuilder.using( new TestStringListMultimapGenerator() { @Override protected ListMultimap<String, String> create(Entry<String, String>[] entries) { ListMultimap<String, String> multimap = ArrayListMultimap.create(); for (Entry<String, String> entry : entries) { multimap.put(entry.getKey(), entry.getValue()); } return multimap; } }) .named("ArrayListMultimap") .withFeatures( MapFeature.ALLOWS_NULL_KEYS, MapFeature.ALLOWS_NULL_VALUES, MapFeature.ALLOWS_ANY_NULL_QUERIES, MapFeature.GENERAL_PURPOSE, MapFeature.FAILS_FAST_ON_CONCURRENT_MODIFICATION, CollectionFeature.SUPPORTS_ITERATOR_REMOVE, CollectionFeature.SERIALIZABLE, CollectionSize.ANY) .createTestSuite()); suite.addTestSuite(ArrayListMultimapTest.class); return suite; }
public static <K, V, M extends Multimap<K, V>> MultimapTestSuiteBuilder<K, V, M> using( TestMultimapGenerator<K, V, M> generator) { return new MultimapTestSuiteBuilder<K, V, M>().usingGenerator(generator); }