public static Test suite() { TestSuite suite = new TestSuite(); suite.addTestSuite(MutableClassToInstanceMapTest.class); // Suppress this one because the tester framework doesn't understand that // *some* remappings will be allowed and others not. Method remapTest = null; try { remapTest = MapPutTester.class.getMethod("testPut_replaceNullValueWithNonNullSupported"); } catch (NoSuchMethodException e) { throw new AssertionError(); } suite.addTest( MapTestSuiteBuilder.using( new TestClassToInstanceMapGenerator() { // Other tests will verify what real, warning-free usage looks like // but here we have to do some serious fudging @Override @SuppressWarnings("unchecked") public Map<Class, Number> create(Object... elements) { MutableClassToInstanceMap<Number> map = MutableClassToInstanceMap.create(); for (Object object : elements) { Entry<Class, Number> entry = (Entry<Class, Number>) object; map.putInstance(entry.getKey(), entry.getValue()); } return (Map) map; } }) .named("MutableClassToInstanceMap") .withFeatures( MapFeature.GENERAL_PURPOSE, MapFeature.RESTRICTS_KEYS, MapFeature.ALLOWS_NULL_VALUES, CollectionSize.ANY, CollectionFeature.SUPPORTS_ITERATOR_REMOVE, MapFeature.ALLOWS_NULL_QUERIES) .suppressing(remapTest) .createTestSuite()); return suite; }
@Override protected List<TestSuite> createDerivedSuites( FeatureSpecificTestSuiteBuilder< ?, ? extends OneSizeTestContainerGenerator<M, Map.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(ImmutableMapTest.class); suite.addTest( MapTestSuiteBuilder.using(new ImmutableMapGenerator()) .withFeatures( CollectionSize.ANY, CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS, CollectionFeature.KNOWN_ORDER, MapFeature.REJECTS_DUPLICATES_AT_CREATION, CollectionFeature.ALLOWS_NULL_QUERIES) .named("ImmutableMap") .createTestSuite()); suite.addTest( MapTestSuiteBuilder.using(new ImmutableMapCopyOfGenerator()) .withFeatures( CollectionSize.ANY, CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS, CollectionFeature.KNOWN_ORDER, CollectionFeature.ALLOWS_NULL_QUERIES) .named("ImmutableMap.copyOf[Map]") .createTestSuite()); suite.addTest( MapTestSuiteBuilder.using(new ImmutableMapCopyOfEntriesGenerator()) .withFeatures( CollectionSize.ANY, MapFeature.REJECTS_DUPLICATES_AT_CREATION, CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS, CollectionFeature.KNOWN_ORDER, CollectionFeature.ALLOWS_NULL_QUERIES) .named("ImmutableMap.copyOf[Iterable<Entry>]") .createTestSuite()); suite.addTest( MapTestSuiteBuilder.using(new ImmutableMapCopyOfEnumMapGenerator()) .withFeatures( CollectionSize.ANY, CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS, CollectionFeature.KNOWN_ORDER, CollectionFeature.ALLOWS_NULL_QUERIES) .named("ImmutableMap.copyOf[EnumMap]") .createTestSuite()); suite.addTest( CollectionTestSuiteBuilder.using(new ImmutableMapUnhashableValuesGenerator()) .withFeatures( CollectionSize.ANY, CollectionFeature.KNOWN_ORDER, CollectionFeature.ALLOWS_NULL_QUERIES) .named("ImmutableMap.values, unhashable") .createTestSuite()); suite.addTest( ListTestSuiteBuilder.using(new ImmutableMapKeyListGenerator()) .named("ImmutableMap.keySet.asList") .withFeatures( CollectionSize.ANY, CollectionFeature.SERIALIZABLE, CollectionFeature.REJECTS_DUPLICATES_AT_CREATION, CollectionFeature.ALLOWS_NULL_QUERIES) .createTestSuite()); suite.addTest( ListTestSuiteBuilder.using(new ImmutableMapEntryListGenerator()) .named("ImmutableMap.entrySet.asList") .withFeatures( CollectionSize.ANY, CollectionFeature.SERIALIZABLE, CollectionFeature.REJECTS_DUPLICATES_AT_CREATION, CollectionFeature.ALLOWS_NULL_QUERIES) .createTestSuite()); suite.addTest( ListTestSuiteBuilder.using(new ImmutableMapValueListGenerator()) .named("ImmutableMap.values.asList") .withFeatures( CollectionSize.ANY, CollectionFeature.SERIALIZABLE, CollectionFeature.ALLOWS_NULL_QUERIES) .createTestSuite()); return suite; }