Coverage Summary for Class: ListMultimapTestSuiteBuilder (com.google.common.collect.testing.google)
| Class | Method, % | Line, % |
|---|---|---|
| ListMultimapTestSuiteBuilder | 0% (0/6) | 0% (0/33) |
| ListMultimapTestSuiteBuilder$MultimapAsMapGetGenerator | 0% (0/2) | 0% (0/2) |
| ListMultimapTestSuiteBuilder$MultimapGetGenerator | 0% (0/2) | 0% (0/2) |
| Total | 0% (0/10) | 0% (0/37) |
1 /* 2 * Copyright (C) 2012 The Guava Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.common.collect.testing.google; 18 19 import com.google.common.annotations.GwtIncompatible; 20 import com.google.common.collect.ListMultimap; 21 import com.google.common.collect.testing.AbstractTester; 22 import com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder; 23 import com.google.common.collect.testing.Helpers; 24 import com.google.common.collect.testing.ListTestSuiteBuilder; 25 import com.google.common.collect.testing.OneSizeTestContainerGenerator; 26 import com.google.common.collect.testing.TestListGenerator; 27 import com.google.common.collect.testing.features.CollectionFeature; 28 import com.google.common.collect.testing.features.CollectionSize; 29 import com.google.common.collect.testing.features.Feature; 30 import com.google.common.collect.testing.features.ListFeature; 31 import java.util.Collections; 32 import java.util.EnumSet; 33 import java.util.List; 34 import java.util.Map.Entry; 35 import java.util.Set; 36 import junit.framework.TestSuite; 37 38 /** 39 * Creates, based on your criteria, a JUnit test suite that exhaustively tests a {@code 40 * ListMultimap} implementation. 41 * 42 * @author Louis Wasserman 43 */ 44 @GwtIncompatible 45 public class ListMultimapTestSuiteBuilder<K, V> 46 extends MultimapTestSuiteBuilder<K, V, ListMultimap<K, V>> { 47 48 public static <K, V> ListMultimapTestSuiteBuilder<K, V> using( 49 TestListMultimapGenerator<K, V> generator) { 50 ListMultimapTestSuiteBuilder<K, V> result = new ListMultimapTestSuiteBuilder<>(); 51 result.usingGenerator(generator); 52 return result; 53 } 54 55 @Override 56 protected List<Class<? extends AbstractTester>> getTesters() { 57 List<Class<? extends AbstractTester>> testers = Helpers.copyToList(super.getTesters()); 58 testers.add(ListMultimapAsMapTester.class); 59 testers.add(ListMultimapEqualsTester.class); 60 testers.add(ListMultimapPutTester.class); 61 testers.add(ListMultimapPutAllTester.class); 62 testers.add(ListMultimapRemoveTester.class); 63 testers.add(ListMultimapReplaceValuesTester.class); 64 return testers; 65 } 66 67 @Override 68 TestSuite computeMultimapGetTestSuite( 69 FeatureSpecificTestSuiteBuilder< 70 ?, ? extends OneSizeTestContainerGenerator<ListMultimap<K, V>, Entry<K, V>>> 71 parentBuilder) { 72 return ListTestSuiteBuilder.using( 73 new MultimapGetGenerator<K, V>(parentBuilder.getSubjectGenerator())) 74 .withFeatures(computeMultimapGetFeatures(parentBuilder.getFeatures())) 75 .named(parentBuilder.getName() + ".get[key]") 76 .suppressing(parentBuilder.getSuppressedTests()) 77 .createTestSuite(); 78 } 79 80 @Override 81 TestSuite computeMultimapAsMapGetTestSuite( 82 FeatureSpecificTestSuiteBuilder< 83 ?, ? extends OneSizeTestContainerGenerator<ListMultimap<K, V>, Entry<K, V>>> 84 parentBuilder) { 85 Set<Feature<?>> features = computeMultimapAsMapGetFeatures(parentBuilder.getFeatures()); 86 if (Collections.disjoint(features, EnumSet.allOf(CollectionSize.class))) { 87 return new TestSuite(); 88 } else { 89 return ListTestSuiteBuilder.using( 90 new MultimapAsMapGetGenerator<K, V>(parentBuilder.getSubjectGenerator())) 91 .withFeatures(features) 92 .named(parentBuilder.getName() + ".asMap[].get[key]") 93 .suppressing(parentBuilder.getSuppressedTests()) 94 .createTestSuite(); 95 } 96 } 97 98 @Override 99 Set<Feature<?>> computeMultimapGetFeatures(Set<Feature<?>> multimapFeatures) { 100 Set<Feature<?>> derivedFeatures = super.computeMultimapGetFeatures(multimapFeatures); 101 if (derivedFeatures.contains(CollectionFeature.SUPPORTS_ADD)) { 102 derivedFeatures.add(ListFeature.SUPPORTS_ADD_WITH_INDEX); 103 } 104 if (derivedFeatures.contains(CollectionFeature.GENERAL_PURPOSE)) { 105 derivedFeatures.add(ListFeature.GENERAL_PURPOSE); 106 } 107 return derivedFeatures; 108 } 109 110 private static class MultimapGetGenerator<K, V> 111 extends MultimapTestSuiteBuilder.MultimapGetGenerator<K, V, ListMultimap<K, V>> 112 implements TestListGenerator<V> { 113 public MultimapGetGenerator( 114 OneSizeTestContainerGenerator<ListMultimap<K, V>, Entry<K, V>> multimapGenerator) { 115 super(multimapGenerator); 116 } 117 118 @Override 119 public List<V> create(Object... elements) { 120 return (List<V>) super.create(elements); 121 } 122 } 123 124 private static class MultimapAsMapGetGenerator<K, V> 125 extends MultimapTestSuiteBuilder.MultimapAsMapGetGenerator<K, V, ListMultimap<K, V>> 126 implements TestListGenerator<V> { 127 public MultimapAsMapGetGenerator( 128 OneSizeTestContainerGenerator<ListMultimap<K, V>, Entry<K, V>> multimapGenerator) { 129 super(multimapGenerator); 130 } 131 132 @Override 133 public List<V> create(Object... elements) { 134 return (List<V>) super.create(elements); 135 } 136 } 137 }