Coverage Summary for Class: SortedMapInterfaceTest (com.google.common.collect.testing)
| Class | Class, % | Method, % | Line, % |
|---|---|---|---|
| SortedMapInterfaceTest | 100% (1/1) | 100% (5/5) | 78.3% (47/60) |
1 /* 2 * Copyright (C) 2009 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; 18 19 import com.google.common.annotations.GwtCompatible; 20 import java.util.Iterator; 21 import java.util.Map.Entry; 22 import java.util.SortedMap; 23 24 /** 25 * Tests representing the contract of {@link SortedMap}. Concrete subclasses of this base class test 26 * conformance of concrete {@link SortedMap} subclasses to that contract. 27 * 28 * @author Jared Levy 29 */ 30 // TODO: Use this class to test classes besides ImmutableSortedMap. 31 @GwtCompatible 32 public abstract class SortedMapInterfaceTest<K, V> extends MapInterfaceTest<K, V> { 33 34 protected SortedMapInterfaceTest( 35 boolean allowsNullKeys, 36 boolean allowsNullValues, 37 boolean supportsPut, 38 boolean supportsRemove, 39 boolean supportsClear) { 40 super(allowsNullKeys, allowsNullValues, supportsPut, supportsRemove, supportsClear); 41 } 42 43 @Override 44 protected abstract SortedMap<K, V> makeEmptyMap() throws UnsupportedOperationException; 45 46 @Override 47 protected abstract SortedMap<K, V> makePopulatedMap() throws UnsupportedOperationException; 48 49 @Override 50 protected SortedMap<K, V> makeEitherMap() { 51 try { 52 return makePopulatedMap(); 53 } catch (UnsupportedOperationException e) { 54 return makeEmptyMap(); 55 } 56 } 57 58 public void testTailMapWriteThrough() { 59 final SortedMap<K, V> map; 60 try { 61 map = makePopulatedMap(); 62 } catch (UnsupportedOperationException e) { 63 return; 64 } 65 if (map.size() < 2 || !supportsPut) { 66 return; 67 } 68 Iterator<Entry<K, V>> iterator = map.entrySet().iterator(); 69 Entry<K, V> firstEntry = iterator.next(); 70 Entry<K, V> secondEntry = iterator.next(); 71 K key = secondEntry.getKey(); 72 SortedMap<K, V> subMap = map.tailMap(key); 73 V value = getValueNotInPopulatedMap(); 74 subMap.put(key, value); 75 assertEquals(secondEntry.getValue(), value); 76 assertEquals(map.get(key), value); 77 try { 78 subMap.put(firstEntry.getKey(), value); 79 fail("Expected IllegalArgumentException"); 80 } catch (IllegalArgumentException expected) { 81 } 82 } 83 84 public void testTailMapRemoveThrough() { 85 final SortedMap<K, V> map; 86 try { 87 map = makePopulatedMap(); 88 } catch (UnsupportedOperationException e) { 89 return; 90 } 91 int oldSize = map.size(); 92 if (map.size() < 2 || !supportsRemove) { 93 return; 94 } 95 Iterator<Entry<K, V>> iterator = map.entrySet().iterator(); 96 Entry<K, V> firstEntry = iterator.next(); 97 Entry<K, V> secondEntry = iterator.next(); 98 K key = secondEntry.getKey(); 99 SortedMap<K, V> subMap = map.tailMap(key); 100 subMap.remove(key); 101 assertNull(subMap.remove(firstEntry.getKey())); 102 assertEquals(map.size(), oldSize - 1); 103 assertFalse(map.containsKey(key)); 104 assertEquals(subMap.size(), oldSize - 2); 105 } 106 107 public void testTailMapClearThrough() { 108 final SortedMap<K, V> map; 109 try { 110 map = makePopulatedMap(); 111 } catch (UnsupportedOperationException e) { 112 return; 113 } 114 int oldSize = map.size(); 115 if (map.size() < 2 || !supportsClear) { 116 return; 117 } 118 Iterator<Entry<K, V>> iterator = map.entrySet().iterator(); 119 iterator.next(); // advance 120 Entry<K, V> secondEntry = iterator.next(); 121 K key = secondEntry.getKey(); 122 SortedMap<K, V> subMap = map.tailMap(key); 123 int subMapSize = subMap.size(); 124 subMap.clear(); 125 assertEquals(map.size(), oldSize - subMapSize); 126 assertTrue(subMap.isEmpty()); 127 } 128 }