Skip to content

Commit 5da71a7

Browse files
chaorenGoogle Java Core Libraries
authored andcommitted
Fix some misconfigured collections test suites that were passing due to #7401.
RELNOTES=n/a PiperOrigin-RevId: 681498058
1 parent f640a0f commit 5da71a7

File tree

16 files changed

+60
-14
lines changed

16 files changed

+60
-14
lines changed

android/guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,15 @@
2121
import com.google.common.collect.testing.DerivedCollectionGenerators.SortedSetSubsetTestSetGenerator;
2222
import com.google.common.collect.testing.features.CollectionFeature;
2323
import com.google.common.collect.testing.features.Feature;
24+
import com.google.common.collect.testing.testers.CollectionAddAllTester;
25+
import com.google.common.collect.testing.testers.CollectionAddTester;
2426
import com.google.common.collect.testing.testers.SortedSetNavigationTester;
27+
import java.lang.reflect.Method;
2528
import java.util.ArrayList;
2629
import java.util.Collection;
30+
import java.util.HashSet;
2731
import java.util.List;
32+
import java.util.Set;
2833
import junit.framework.TestSuite;
2934

3035
/**
@@ -87,13 +92,20 @@ final TestSuite createSubsetSuite(
8792
(TestSortedSetGenerator<E>) parentBuilder.getSubjectGenerator().getInnerGenerator();
8893

8994
List<Feature<?>> features = new ArrayList<>(parentBuilder.getFeatures());
90-
features.remove(CollectionFeature.ALLOWS_NULL_VALUES);
95+
Set<Method> suppressing = new HashSet<>(parentBuilder.getSuppressedTests());
9196
features.add(CollectionFeature.SUBSET_VIEW);
97+
if (features.remove(CollectionFeature.ALLOWS_NULL_VALUES)) {
98+
// the null value might be out of bounds, so we can't always construct a subset with nulls
99+
features.add(CollectionFeature.ALLOWS_NULL_QUERIES);
100+
// but add null might still be supported if it happens to be within range of the subset
101+
suppressing.add(CollectionAddTester.getAddNullUnsupportedMethod());
102+
suppressing.add(CollectionAddAllTester.getAddAllNullUnsupportedMethod());
103+
}
92104

93105
return newBuilderUsing(delegate, to, from)
94106
.named(parentBuilder.getName() + " subSet " + from + "-" + to)
95107
.withFeatures(features)
96-
.suppressing(parentBuilder.getSuppressedTests())
108+
.suppressing(suppressing)
97109
.withSetUp(parentBuilder.getSetUp())
98110
.withTearDown(parentBuilder.getTearDown())
99111
.createTestSuite();

android/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.google.common.collect.testing.google;
1818

19+
import static com.google.common.base.Preconditions.checkNotNull;
20+
1921
import com.google.common.annotations.GwtCompatible;
2022
import com.google.common.collect.BiMap;
2123
import com.google.common.collect.ImmutableBiMap;
@@ -38,6 +40,7 @@ public static class ImmutableBiMapGenerator extends TestStringBiMapGenerator {
3840
protected BiMap<String, String> create(Entry<String, String>[] entries) {
3941
ImmutableBiMap.Builder<String, String> builder = ImmutableBiMap.builder();
4042
for (Entry<String, String> entry : entries) {
43+
checkNotNull(entry);
4144
builder.put(entry.getKey(), entry.getValue());
4245
}
4346
return builder.build();

android/guava-testlib/src/com/google/common/collect/testing/google/DerivedGoogleCollectionGenerators.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.google.common.collect.testing.google;
1818

19+
import static com.google.common.base.Preconditions.checkNotNull;
20+
1921
import com.google.common.annotations.GwtCompatible;
2022
import com.google.common.collect.BiMap;
2123
import com.google.common.collect.testing.DerivedGenerator;
@@ -112,6 +114,7 @@ public SampleElements<Entry<V, K>> samples() {
112114
}
113115

114116
private Entry<V, K> reverse(Entry<K, V> entry) {
117+
checkNotNull(entry);
115118
return Helpers.mapEntry(entry.getValue(), entry.getKey());
116119
}
117120

android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapTestSuiteBuilder.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ Set<Feature<?>> computeMultimapGetFeatures(Set<Feature<?>> multimapFeatures) {
102102
if (derivedFeatures.contains(CollectionFeature.SUPPORTS_ADD)) {
103103
derivedFeatures.add(ListFeature.SUPPORTS_ADD_WITH_INDEX);
104104
}
105+
if (derivedFeatures.contains(CollectionFeature.SUPPORTS_REMOVE)) {
106+
derivedFeatures.add(ListFeature.SUPPORTS_REMOVE_WITH_INDEX);
107+
}
105108
if (derivedFeatures.contains(CollectionFeature.GENERAL_PURPOSE)) {
106109
derivedFeatures.add(ListFeature.GENERAL_PURPOSE);
107110
}

android/guava-testlib/src/com/google/common/collect/testing/google/MapGenerators.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.common.collect.testing.google;
1818

19+
import static com.google.common.base.Preconditions.checkNotNull;
1920
import static com.google.common.collect.testing.Helpers.mapEntry;
2021

2122
import com.google.common.annotations.GwtCompatible;
@@ -53,6 +54,7 @@ public static class ImmutableMapGenerator extends TestStringMapGenerator {
5354
protected Map<String, String> create(Entry<String, String>[] entries) {
5455
ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
5556
for (Entry<String, String> entry : entries) {
57+
checkNotNull(entry);
5658
builder.put(entry.getKey(), entry.getValue());
5759
}
5860
return builder.buildOrThrow();
@@ -142,7 +144,7 @@ public List<Entry<String, Integer>> create(Object... elements) {
142144
ImmutableMap.Builder<String, Integer> builder = ImmutableMap.builder();
143145
for (Object o : elements) {
144146
@SuppressWarnings("unchecked")
145-
Entry<String, Integer> entry = (Entry<String, Integer>) o;
147+
Entry<String, Integer> entry = (Entry<String, Integer>) checkNotNull(o);
146148
builder.put(entry);
147149
}
148150
return builder.buildOrThrow().entrySet().asList();
@@ -154,7 +156,7 @@ public static class ImmutableEnumMapGenerator extends TestEnumMapGenerator {
154156
protected Map<AnEnum, String> create(Entry<AnEnum, String>[] entries) {
155157
Map<AnEnum, String> map = Maps.newHashMap();
156158
for (Entry<AnEnum, String> entry : entries) {
157-
// checkArgument(!map.containsKey(entry.getKey()));
159+
checkNotNull(entry);
158160
map.put(entry.getKey(), entry.getValue());
159161
}
160162
return Maps.immutableEnumMap(map);

android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutIterableTester.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public void testPutAllOnPresentNullKey() {
157157
assertGet(null, v3(), v4());
158158
}
159159

160-
@MapFeature.Require(absent = ALLOWS_NULL_KEYS)
160+
@MapFeature.Require(value = SUPPORTS_PUT, absent = ALLOWS_NULL_KEYS)
161161
public void testPutAllNullForbidden() {
162162
try {
163163
multimap().putAll(null, Collections.singletonList(v3()));

android/guava-testlib/src/com/google/common/collect/testing/google/SortedMapGenerators.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public List<Entry<String, Integer>> create(Object... elements) {
9898
ImmutableSortedMap.Builder<String, Integer> builder = ImmutableSortedMap.naturalOrder();
9999
for (Object o : elements) {
100100
@SuppressWarnings("unchecked")
101-
Entry<String, Integer> entry = (Entry<String, Integer>) o;
101+
Entry<String, Integer> entry = (Entry<String, Integer>) checkNotNull(o);
102102
builder.put(entry);
103103
}
104104
return builder.build().entrySet().asList();

android/guava-tests/test/com/google/common/collect/MultisetsCollectionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static Test suite() {
5050
CollectionSize.ANY,
5151
CollectionFeature.KNOWN_ORDER,
5252
CollectionFeature.SERIALIZABLE,
53-
CollectionFeature.ALLOWS_NULL_QUERIES)
53+
CollectionFeature.ALLOWS_NULL_VALUES)
5454
.named("Multisets.unmodifiableMultiset[LinkedHashMultiset]")
5555
.createTestSuite());
5656

guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,15 @@
2121
import com.google.common.collect.testing.DerivedCollectionGenerators.SortedSetSubsetTestSetGenerator;
2222
import com.google.common.collect.testing.features.CollectionFeature;
2323
import com.google.common.collect.testing.features.Feature;
24+
import com.google.common.collect.testing.testers.CollectionAddAllTester;
25+
import com.google.common.collect.testing.testers.CollectionAddTester;
2426
import com.google.common.collect.testing.testers.SortedSetNavigationTester;
27+
import java.lang.reflect.Method;
2528
import java.util.ArrayList;
2629
import java.util.Collection;
30+
import java.util.HashSet;
2731
import java.util.List;
32+
import java.util.Set;
2833
import junit.framework.TestSuite;
2934

3035
/**
@@ -87,13 +92,20 @@ final TestSuite createSubsetSuite(
8792
(TestSortedSetGenerator<E>) parentBuilder.getSubjectGenerator().getInnerGenerator();
8893

8994
List<Feature<?>> features = new ArrayList<>(parentBuilder.getFeatures());
90-
features.remove(CollectionFeature.ALLOWS_NULL_VALUES);
95+
Set<Method> suppressing = new HashSet<>(parentBuilder.getSuppressedTests());
9196
features.add(CollectionFeature.SUBSET_VIEW);
97+
if (features.remove(CollectionFeature.ALLOWS_NULL_VALUES)) {
98+
// the null value might be out of bounds, so we can't always construct a subset with nulls
99+
features.add(CollectionFeature.ALLOWS_NULL_QUERIES);
100+
// but add null might still be supported if it happens to be within range of the subset
101+
suppressing.add(CollectionAddTester.getAddNullUnsupportedMethod());
102+
suppressing.add(CollectionAddAllTester.getAddAllNullUnsupportedMethod());
103+
}
92104

93105
return newBuilderUsing(delegate, to, from)
94106
.named(parentBuilder.getName() + " subSet " + from + "-" + to)
95107
.withFeatures(features)
96-
.suppressing(parentBuilder.getSuppressedTests())
108+
.suppressing(suppressing)
97109
.withSetUp(parentBuilder.getSetUp())
98110
.withTearDown(parentBuilder.getTearDown())
99111
.createTestSuite();

guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.google.common.collect.testing.google;
1818

19+
import static com.google.common.base.Preconditions.checkNotNull;
20+
1921
import com.google.common.annotations.GwtCompatible;
2022
import com.google.common.collect.BiMap;
2123
import com.google.common.collect.ImmutableBiMap;
@@ -38,6 +40,7 @@ public static class ImmutableBiMapGenerator extends TestStringBiMapGenerator {
3840
protected BiMap<String, String> create(Entry<String, String>[] entries) {
3941
ImmutableBiMap.Builder<String, String> builder = ImmutableBiMap.builder();
4042
for (Entry<String, String> entry : entries) {
43+
checkNotNull(entry);
4144
builder.put(entry.getKey(), entry.getValue());
4245
}
4346
return builder.build();

0 commit comments

Comments
 (0)