• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2013 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 static com.google.common.collect.testing.features.CollectionSize.ZERO;
20 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
21 import static com.google.common.truth.Truth.assertThat;
22 
23 import com.google.common.annotations.GwtCompatible;
24 import com.google.common.collect.Multimap;
25 import com.google.common.collect.testing.features.CollectionSize;
26 import com.google.common.collect.testing.features.MapFeature;
27 
28 import java.util.Collection;
29 import java.util.Map;
30 import java.util.Map.Entry;
31 
32 /**
33  * Tests for {@link Multimap#clear()}.
34  *
35  * @author Louis Wasserman
36  */
37 @GwtCompatible
38 public class MultimapClearTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
39   @CollectionSize.Require(absent = ZERO)
40   @MapFeature.Require(absent = SUPPORTS_REMOVE)
testClearUnsupported()41   public void testClearUnsupported() {
42     try {
43       multimap().clear();
44       fail("Expected UnsupportedOperationException");
45     } catch (UnsupportedOperationException expected) {}
46   }
47 
assertCleared()48   private void assertCleared() {
49     assertEquals(0, multimap().size());
50     assertTrue(multimap().isEmpty());
51     assertEquals(multimap(), getSubjectGenerator().create());
52     assertThat(multimap().entries()).isEmpty();
53     assertThat(multimap().asMap()).isEmpty();
54     assertThat(multimap().keySet()).isEmpty();
55     assertThat(multimap().keys()).isEmpty();
56     assertThat(multimap().values()).isEmpty();
57     for (K key : sampleKeys()) {
58       assertGet(key);
59     }
60   }
61 
62   @MapFeature.Require(SUPPORTS_REMOVE)
testClear()63   public void testClear() {
64     multimap().clear();
65     assertCleared();
66   }
67 
68   @MapFeature.Require(SUPPORTS_REMOVE)
testClearThroughEntries()69   public void testClearThroughEntries() {
70     multimap().entries().clear();
71     assertCleared();
72   }
73 
74   @MapFeature.Require(SUPPORTS_REMOVE)
testClearThroughAsMap()75   public void testClearThroughAsMap() {
76     multimap().asMap().clear();
77     assertCleared();
78   }
79 
80   @MapFeature.Require(SUPPORTS_REMOVE)
testClearThroughKeySet()81   public void testClearThroughKeySet() {
82     multimap().keySet().clear();
83     assertCleared();
84   }
85 
86   @MapFeature.Require(SUPPORTS_REMOVE)
testClearThroughKeys()87   public void testClearThroughKeys() {
88     multimap().keys().clear();
89     assertCleared();
90   }
91 
92   @MapFeature.Require(SUPPORTS_REMOVE)
testClearThroughValues()93   public void testClearThroughValues() {
94     multimap().values().clear();
95     assertCleared();
96   }
97 
98   @MapFeature.Require(SUPPORTS_REMOVE)
99   @CollectionSize.Require(absent = ZERO)
testClearPropagatesToGet()100   public void testClearPropagatesToGet() {
101     for (K key : sampleKeys()) {
102       resetContainer();
103       Collection<V> collection = multimap().get(key);
104       multimap().clear();
105       assertThat(collection).isEmpty();
106     }
107   }
108 
109   @MapFeature.Require(SUPPORTS_REMOVE)
110   @CollectionSize.Require(absent = ZERO)
testClearPropagatesToAsMapGet()111   public void testClearPropagatesToAsMapGet() {
112     for (K key : sampleKeys()) {
113       resetContainer();
114       Collection<V> collection = multimap().asMap().get(key);
115       if (collection != null) {
116         multimap().clear();
117         assertThat(collection).isEmpty();
118       }
119     }
120   }
121 
122   @MapFeature.Require(SUPPORTS_REMOVE)
testClearPropagatesToAsMap()123   public void testClearPropagatesToAsMap() {
124     Map<K, Collection<V>> asMap = multimap().asMap();
125     multimap().clear();
126     assertThat(asMap).isEmpty();
127   }
128 
129   @MapFeature.Require(SUPPORTS_REMOVE)
testClearPropagatesToEntries()130   public void testClearPropagatesToEntries() {
131     Collection<Entry<K, V>> entries = multimap().entries();
132     multimap().clear();
133     assertThat(entries).isEmpty();
134   }
135 }
136