1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect.testing.google;
18
19 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
20 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
21 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
22 import static com.google.common.truth.Truth.assertThat;
23
24 import com.google.common.annotations.GwtCompatible;
25 import com.google.common.collect.Multimap;
26 import com.google.common.collect.testing.Helpers;
27 import com.google.common.collect.testing.features.MapFeature;
28
29 import java.util.Collection;
30
31
32
33
34
35
36 @GwtCompatible
37 public class MultimapPutAllMultimapTester<K, V>
38 extends AbstractMultimapTester<K, V, Multimap<K, V>> {
39 @MapFeature.Require(absent = SUPPORTS_PUT)
40 public void testPutUnsupported() {
41 try {
42 multimap().putAll(getSubjectGenerator().create(
43 Helpers.mapEntry(sampleKeys().e3, sampleValues().e3)));
44 fail("Expected UnsupportedOperationException");
45 } catch (UnsupportedOperationException expected) {}
46 }
47
48 @MapFeature.Require(SUPPORTS_PUT)
49 public void testPutAllIntoEmpty() {
50 Multimap<K, V> target = getSubjectGenerator().create();
51 assertEquals(!multimap().isEmpty(), target.putAll(multimap()));
52 assertEquals(multimap(), target);
53 }
54
55 @MapFeature.Require(SUPPORTS_PUT)
56 public void testPutAll() {
57 Multimap<K, V> source = getSubjectGenerator().create(
58 Helpers.mapEntry(sampleKeys().e0, sampleValues().e3),
59 Helpers.mapEntry(sampleKeys().e3, sampleValues().e3));
60 assertTrue(multimap().putAll(source));
61 assertTrue(multimap().containsEntry(sampleKeys().e0, sampleValues().e3));
62 assertTrue(multimap().containsEntry(sampleKeys().e3, sampleValues().e3));
63 }
64
65 @MapFeature.Require({SUPPORTS_PUT, ALLOWS_NULL_VALUES})
66 public void testPutAllWithNullValue() {
67 Multimap<K, V> source = getSubjectGenerator().create(
68 Helpers.mapEntry(sampleKeys().e0, null));
69 assertTrue(multimap().putAll(source));
70 assertTrue(multimap().containsEntry(sampleKeys().e0, null));
71 }
72
73 @MapFeature.Require({SUPPORTS_PUT, ALLOWS_NULL_KEYS})
74 public void testPutAllWithNullKey() {
75 Multimap<K, V> source = getSubjectGenerator().create(
76 Helpers.mapEntry(null, sampleValues().e0));
77 assertTrue(multimap().putAll(source));
78 assertTrue(multimap().containsEntry(null, sampleValues().e0));
79 }
80
81 @MapFeature.Require(value = SUPPORTS_PUT, absent = ALLOWS_NULL_VALUES)
82 public void testPutAllRejectsNullValue() {
83 Multimap<K, V> source = getSubjectGenerator().create(
84 Helpers.mapEntry(sampleKeys().e0, null));
85 try {
86 multimap().putAll(source);
87 fail("Expected NullPointerException");
88 } catch (NullPointerException expected) {}
89 expectUnchanged();
90 }
91
92 @MapFeature.Require(value = SUPPORTS_PUT, absent = ALLOWS_NULL_KEYS)
93 public void testPutAllRejectsNullKey() {
94 Multimap<K, V> source = getSubjectGenerator().create(
95 Helpers.mapEntry(null, sampleValues().e0));
96 try {
97 multimap().putAll(source);
98 fail("Expected NullPointerException");
99 } catch (NullPointerException expected) {}
100 expectUnchanged();
101 }
102
103 @MapFeature.Require(SUPPORTS_PUT)
104 public void testPutAllPropagatesToGet() {
105 Multimap<K, V> source = getSubjectGenerator().create(
106 Helpers.mapEntry(sampleKeys().e0, sampleValues().e3),
107 Helpers.mapEntry(sampleKeys().e3, sampleValues().e3));
108 Collection<V> getCollection = multimap().get(sampleKeys().e0);
109 int getCollectionSize = getCollection.size();
110 assertTrue(multimap().putAll(source));
111 assertEquals(getCollectionSize + 1, getCollection.size());
112 assertThat(getCollection).has().allOf(sampleValues().e3);
113 }
114 }