Coverage Summary for Class: MapEqualsTester (com.google.common.collect.testing.testers)

Class Class, % Method, % Line, %
MapEqualsTester 100% (1/1) 100% (11/11) 100% (49/49)


1 /* 2  * Copyright (C) 2008 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.testers; 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  22 import com.google.common.annotations.GwtCompatible; 23 import com.google.common.collect.testing.AbstractMapTester; 24 import com.google.common.collect.testing.Helpers; 25 import com.google.common.collect.testing.features.CollectionSize; 26 import com.google.common.collect.testing.features.MapFeature; 27 import java.util.Collection; 28 import java.util.HashMap; 29 import java.util.Map; 30 import java.util.Map.Entry; 31 import org.junit.Ignore; 32  33 /** 34  * Tests {@link java.util.Map#equals}. 35  * 36  * @author George van den Driessche 37  * @author Chris Povirk 38  */ 39 @GwtCompatible 40 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests. 41 public class MapEqualsTester<K, V> extends AbstractMapTester<K, V> { 42  public void testEquals_otherMapWithSameEntries() { 43  assertTrue( 44  "A Map should equal any other Map containing the same entries.", 45  getMap().equals(newHashMap(getSampleEntries()))); 46  } 47  48  @CollectionSize.Require(absent = CollectionSize.ZERO) 49  public void testEquals_otherMapWithDifferentEntries() { 50  Map<K, V> other = newHashMap(getSampleEntries(getNumEntries() - 1)); 51  other.put(k3(), v3()); 52  assertFalse( 53  "A Map should not equal another Map containing different entries.", getMap().equals(other)); 54  } 55  56  @CollectionSize.Require(absent = CollectionSize.ZERO) 57  @MapFeature.Require(ALLOWS_NULL_KEYS) 58  public void testEquals_containingNullKey() { 59  Collection<Entry<K, V>> entries = getSampleEntries(getNumEntries() - 1); 60  entries.add(entry(null, v3())); 61  62  resetContainer(getSubjectGenerator().create(entries.toArray())); 63  assertTrue( 64  "A Map should equal any other Map containing the same entries," 65  + " even if some keys are null.", 66  getMap().equals(newHashMap(entries))); 67  } 68  69  @CollectionSize.Require(absent = CollectionSize.ZERO) 70  public void testEquals_otherContainsNullKey() { 71  Collection<Entry<K, V>> entries = getSampleEntries(getNumEntries() - 1); 72  entries.add(entry(null, v3())); 73  Map<K, V> other = newHashMap(entries); 74  75  assertFalse( 76  "Two Maps should not be equal if exactly one of them contains a null key.", 77  getMap().equals(other)); 78  } 79  80  @CollectionSize.Require(absent = CollectionSize.ZERO) 81  @MapFeature.Require(ALLOWS_NULL_VALUES) 82  public void testEquals_containingNullValue() { 83  Collection<Entry<K, V>> entries = getSampleEntries(getNumEntries() - 1); 84  entries.add(entry(k3(), null)); 85  86  resetContainer(getSubjectGenerator().create(entries.toArray())); 87  assertTrue( 88  "A Map should equal any other Map containing the same entries," 89  + " even if some values are null.", 90  getMap().equals(newHashMap(entries))); 91  } 92  93  @CollectionSize.Require(absent = CollectionSize.ZERO) 94  public void testEquals_otherContainsNullValue() { 95  Collection<Entry<K, V>> entries = getSampleEntries(getNumEntries() - 1); 96  entries.add(entry(k3(), null)); 97  Map<K, V> other = newHashMap(entries); 98  99  assertFalse( 100  "Two Maps should not be equal if exactly one of them contains a null value.", 101  getMap().equals(other)); 102  } 103  104  @CollectionSize.Require(absent = CollectionSize.ZERO) 105  public void testEquals_smallerMap() { 106  Collection<Entry<K, V>> fewerEntries = getSampleEntries(getNumEntries() - 1); 107  assertFalse( 108  "Maps of different sizes should not be equal.", getMap().equals(newHashMap(fewerEntries))); 109  } 110  111  public void testEquals_largerMap() { 112  Collection<Entry<K, V>> moreEntries = getSampleEntries(getNumEntries() + 1); 113  assertFalse( 114  "Maps of different sizes should not be equal.", getMap().equals(newHashMap(moreEntries))); 115  } 116  117  public void testEquals_list() { 118  assertFalse( 119  "A List should never equal a Map.", 120  getMap().equals(Helpers.copyToList(getMap().entrySet()))); 121  } 122  123  private static <K, V> HashMap<K, V> newHashMap( 124  Collection<? extends Entry<? extends K, ? extends V>> entries) { 125  HashMap<K, V> map = new HashMap<>(); 126  for (Entry<? extends K, ? extends V> entry : entries) { 127  map.put(entry.getKey(), entry.getValue()); 128  } 129  return map; 130  } 131 }