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");
      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_PUT;
     21 
     22 import com.google.common.annotations.GwtCompatible;
     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 /**
     28  * Tester for {@code BiMap.put} and {@code BiMap.forcePut}.
     29  */
     30 @GwtCompatible
     31 public class BiMapPutTester<K, V> extends AbstractBiMapTester<K, V> {
     32 
     33   @SuppressWarnings("unchecked")
     34   @MapFeature.Require(SUPPORTS_PUT)
     35   @CollectionSize.Require(ZERO)
     36   public void testPutWithSameValueFails() {
     37     K k0 = samples.e0.getKey();
     38     K k1 = samples.e1.getKey();
     39     V v0 = samples.e0.getValue();
     40     getMap().put(k0, v0);
     41     try {
     42       getMap().put(k1, v0);
     43       fail("Expected IllegalArgumentException");
     44     } catch (IllegalArgumentException expected) {
     45       // success
     46     }
     47     // verify that the bimap is unchanged
     48     expectAdded(samples.e0);
     49   }
     50 
     51   @SuppressWarnings("unchecked")
     52   @MapFeature.Require(SUPPORTS_PUT)
     53   @CollectionSize.Require(ZERO)
     54   public void testPutPresentKeyDifferentValue() {
     55     K k0 = samples.e0.getKey();
     56     V v0 = samples.e0.getValue();
     57     V v1 = samples.e1.getValue();
     58     getMap().put(k0, v0);
     59     getMap().put(k0, v1);
     60     // verify that the bimap is changed, and that the old inverse mapping
     61     // from v1 -> v0 is deleted
     62     expectContents(Helpers.mapEntry(k0, v1));
     63   }
     64 
     65   @SuppressWarnings("unchecked")
     66   @MapFeature.Require(SUPPORTS_PUT)
     67   @CollectionSize.Require(ZERO)
     68   public void putDistinctKeysDistinctValues() {
     69     getMap().put(samples.e0.getKey(), samples.e0.getValue());
     70     getMap().put(samples.e1.getKey(), samples.e1.getValue());
     71     expectAdded(samples.e0, samples.e1);
     72   }
     73 
     74   @SuppressWarnings("unchecked")
     75   @MapFeature.Require(SUPPORTS_PUT)
     76   @CollectionSize.Require(ZERO)
     77   public void testForcePutOverwritesOldValueEntry() {
     78     K k0 = samples.e0.getKey();
     79     K k1 = samples.e1.getKey();
     80     V v0 = samples.e0.getValue();
     81     getMap().put(k0, v0);
     82     getMap().forcePut(k1, v0);
     83     // verify that the bimap is unchanged
     84     expectAdded(Helpers.mapEntry(k1, v0));
     85   }
     86 
     87   @SuppressWarnings("unchecked")
     88   @MapFeature.Require(SUPPORTS_PUT)
     89   @CollectionSize.Require(ZERO)
     90   public void testInversePut() {
     91     K k0 = samples.e0.getKey();
     92     V v0 = samples.e0.getValue();
     93     K k1 = samples.e1.getKey();
     94     V v1 = samples.e1.getValue();
     95     getMap().put(k0, v0);
     96     getMap().inverse().put(v1, k1);
     97     expectAdded(samples.e0, samples.e1);
     98   }
     99 }
    100