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

Class Class, % Method, % Line, %
MapClearTester 100% (1/1) 100% (7/7) 78.9% (30/38)


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.CollectionSize.SEVERAL; 20 import static com.google.common.collect.testing.features.CollectionSize.ZERO; 21 import static com.google.common.collect.testing.features.MapFeature.FAILS_FAST_ON_CONCURRENT_MODIFICATION; 22 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE; 23  24 import com.google.common.annotations.GwtCompatible; 25 import com.google.common.collect.testing.AbstractMapTester; 26 import com.google.common.collect.testing.features.CollectionSize; 27 import com.google.common.collect.testing.features.MapFeature; 28 import java.util.ConcurrentModificationException; 29 import java.util.Iterator; 30 import java.util.Map.Entry; 31 import org.junit.Ignore; 32  33 /** 34  * A generic JUnit test which tests {@code clear()} operations on a map. Can't be invoked directly; 35  * please see {@link com.google.common.collect.testing.MapTestSuiteBuilder}. 36  * 37  * @author George van den Driessche 38  * @author Chris Povirk 39  */ 40 @GwtCompatible 41 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests. 42 public class MapClearTester<K, V> extends AbstractMapTester<K, V> { 43  @MapFeature.Require(SUPPORTS_REMOVE) 44  public void testClear() { 45  getMap().clear(); 46  assertTrue("After clear(), a map should be empty.", getMap().isEmpty()); 47  assertEquals(0, getMap().size()); 48  assertFalse(getMap().entrySet().iterator().hasNext()); 49  } 50  51  @MapFeature.Require({FAILS_FAST_ON_CONCURRENT_MODIFICATION, SUPPORTS_REMOVE}) 52  @CollectionSize.Require(SEVERAL) 53  public void testClearConcurrentWithEntrySetIteration() { 54  try { 55  Iterator<Entry<K, V>> iterator = getMap().entrySet().iterator(); 56  getMap().clear(); 57  iterator.next(); 58  fail("Expected ConcurrentModificationException"); 59  } catch (ConcurrentModificationException expected) { 60  // success 61  } 62  } 63  64  @MapFeature.Require({FAILS_FAST_ON_CONCURRENT_MODIFICATION, SUPPORTS_REMOVE}) 65  @CollectionSize.Require(SEVERAL) 66  public void testClearConcurrentWithKeySetIteration() { 67  try { 68  Iterator<K> iterator = getMap().keySet().iterator(); 69  getMap().clear(); 70  iterator.next(); 71  fail("Expected ConcurrentModificationException"); 72  } catch (ConcurrentModificationException expected) { 73  // success 74  } 75  } 76  77  @MapFeature.Require({FAILS_FAST_ON_CONCURRENT_MODIFICATION, SUPPORTS_REMOVE}) 78  @CollectionSize.Require(SEVERAL) 79  public void testClearConcurrentWithValuesIteration() { 80  try { 81  Iterator<V> iterator = getMap().values().iterator(); 82  getMap().clear(); 83  iterator.next(); 84  fail("Expected ConcurrentModificationException"); 85  } catch (ConcurrentModificationException expected) { 86  // success 87  } 88  } 89  90  @MapFeature.Require(absent = SUPPORTS_REMOVE) 91  @CollectionSize.Require(absent = ZERO) 92  public void testClear_unsupported() { 93  try { 94  getMap().clear(); 95  fail( 96  "clear() should throw UnsupportedOperation if a map does " 97  + "not support it and is not empty."); 98  } catch (UnsupportedOperationException expected) { 99  } 100  expectUnchanged(); 101  } 102  103  @MapFeature.Require(absent = SUPPORTS_REMOVE) 104  @CollectionSize.Require(ZERO) 105  public void testClear_unsupportedByEmptyCollection() { 106  try { 107  getMap().clear(); 108  } catch (UnsupportedOperationException tolerated) { 109  } 110  expectUnchanged(); 111  } 112 }