Home | History | Annotate | Download | only in google
      1 /*
      2  * Copyright (C) 2012 The Guava Authors
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
      5  * in compliance with the License. You may obtain a copy of the License at
      6  *
      7  * http://www.apache.org/licenses/LICENSE-2.0
      8  *
      9  * Unless required by applicable law or agreed to in writing, software distributed under the License
     10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
     11  * or implied. See the License for the specific language governing permissions and limitations under
     12  * the License.
     13  */
     14 
     15 package com.google.common.collect.testing.google;
     16 
     17 import static com.google.common.collect.testing.Helpers.copyToList;
     18 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
     19 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
     20 
     21 import com.google.common.annotations.GwtCompatible;
     22 import com.google.common.collect.ListMultimap;
     23 import com.google.common.collect.testing.Helpers;
     24 import com.google.common.collect.testing.features.CollectionSize;
     25 import com.google.common.collect.testing.features.MapFeature;
     26 
     27 import java.util.List;
     28 import java.util.Map.Entry;
     29 
     30 /**
     31  * Testers for {@link ListMultimap#put(Object, Object)}.
     32  *
     33  * @author Louis Wasserman
     34  */
     35 @GwtCompatible
     36 public class ListMultimapPutTester<K, V> extends AbstractListMultimapTester<K, V> {
     37   // MultimapPutTester tests non-duplicate values, but ignores ordering
     38 
     39   @MapFeature.Require(SUPPORTS_PUT)
     40   public void testPutAddsValueAtEnd() {
     41     for (K key : sampleKeys()) {
     42       for (V value : sampleValues()) {
     43         resetContainer();
     44 
     45         List<V> values = multimap().get(key);
     46         List<V> expectedValues = Helpers.copyToList(values);
     47 
     48         assertTrue(multimap().put(key, value));
     49         expectedValues.add(value);
     50 
     51         assertGet(key, expectedValues);
     52         assertEquals(value, values.get(values.size() - 1));
     53       }
     54     }
     55   }
     56 
     57   @MapFeature.Require(SUPPORTS_PUT)
     58   @CollectionSize.Require(absent = ZERO)
     59   public void testPutDuplicateValue() {
     60     List<Entry<K, V>> entries = copyToList(multimap().entries());
     61 
     62     for (Entry<K, V> entry : entries) {
     63       resetContainer();
     64 
     65       K k = entry.getKey();
     66       V v = entry.getValue();
     67 
     68       List<V> values = multimap().get(k);
     69       List<V> expectedValues = copyToList(values);
     70 
     71       assertTrue(multimap().put(k, v));
     72       expectedValues.add(v);
     73       assertGet(k, expectedValues);
     74       assertEquals(v, values.get(values.size() - 1));
     75     }
     76   }
     77 }
     78