@MapFeature.Require(SUPPORTS_REMOVE) public void testClearThroughKeySet() { multimap().keySet().clear(); assertCleared(); }
@MapFeature.Require(SUPPORTS_REMOVE) public void testClearPropagatesToAsMap() { Map<K, Collection<V>> asMap = multimap().asMap(); multimap().clear(); assertEmpty(asMap); }
@CollectionSize.Require(absent = ZERO) @MapFeature.Require(SUPPORTS_REMOVE) public void testReflectsMultimapRemove() { Collection<V> result = multimap().asMap().get(k0()); multimap().removeAll(k0()); assertEmpty(result); } }
@MapFeature.Require(absent = SUPPORTS_PUT) @CollectionSize.Require(absent = ZERO) public void testReplaceEntry_unsupportedWrongValue() { try { getMap().replace(k0(), v3(), v4()); } catch (UnsupportedOperationException tolerated) { // the operation would be a no-op, so exceptions are allowed but not required } expectUnchanged(); }
@MapFeature.Require(value = SUPPORTS_PUT, absent = ALLOWS_NULL_VALUE_QUERIES) @CollectionSize.Require(absent = ZERO) public void testReplaceEntry_wrongValueNullValueUnsupported() { try { assertFalse(getMap().replace(k0(), v3(), null)); } catch (NullPointerException tolerated) { // the operation would be a no-op, so exceptions are allowed but not required } expectUnchanged(); }
@CollectionSize.Require(absent = ZERO) @MapFeature.Require(SUPPORTS_REMOVE) public void testRetainAllPropagatesToMultimap() { multimap().entries().retainAll(Collections.singleton(Helpers.mapEntry(k0(), v0()))); assertEquals(getSubjectGenerator().create(Helpers.mapEntry(k0(), v0())), multimap()); assertEquals(1, multimap().size()); assertTrue(multimap().containsEntry(k0(), v0())); }
@MapFeature.Require(value = SUPPORTS_PUT, absent = ALLOWS_NULL_KEY_QUERIES) public void testReplace_absentNullKeyUnsupported() { try { getMap().replace(null, v3()); } catch (NullPointerException tolerated) { // permitted not to throw because it would be a no-op } expectUnchanged(); }
@MapFeature.Require(SUPPORTS_PUT) public void testReplace_supportedAbsent() { assertNull(getMap().replace(k3(), v3())); expectUnchanged(); }
@MapFeature.Require(SUPPORTS_PUT) @CollectionSize.Require(absent = ZERO) public void testReplace_supportedPresentNoChange() { assertEquals(v0(), getMap().replace(k0(), v0())); expectUnchanged(); }
@MapFeature.Require(SUPPORTS_REMOVE) public void testAsMapRemoveImplementsSet() { List<K> keys = new ArrayList<K>(multimap().keySet()); for (K key : keys) { resetCollection(); assertTrue(multimap().asMap().remove(key) instanceof Set); } }
@MapFeature.Require(absent = SUPPORTS_REMOVE) @CollectionSize.Require(absent = ZERO) public void testRemove_unsupportedPresent() { try { getMap().remove(k0(), v0()); fail("Expected UnsupportedOperationException"); } catch (UnsupportedOperationException expected) { } expectUnchanged(); }
@MapFeature.Require(SUPPORTS_REMOVE) public void testRemove_supportedPresentKeyWrongValue() { assertFalse(getMap().remove(k0(), v3())); expectUnchanged(); }
@MapFeature.Require(ALLOWS_NULL_VALUES) @CollectionSize.Require(absent = ZERO) public void testGetWithNullValue() { initMultimapWithNullValue(); assertContains(multimap().get(getKeyForNullValue()), null); } }
@MapFeature.Require(SUPPORTS_PUT) public void testPropagatesAddAllToMultimap() { Collection<V> result = multimap().get(k0()); assertTrue(result.addAll(Collections.singletonList(v3()))); assertTrue(multimap().containsKey(k0())); assertEquals(getNumElements() + 1, multimap().size()); assertTrue(multimap().containsEntry(k0(), v3())); }
@MapFeature.Require(SUPPORTS_REMOVE) public void testClearThroughKeys() { multimap().keys().clear(); assertCleared(); }
@MapFeature.Require(absent = SUPPORTS_PUT) @CollectionSize.Require(absent = ZERO) public void testPutIfAbsent_unsupportedPresentExistingValue() { try { assertEquals( "putIfAbsent(present, existingValue) should return present or throw", v0(), putIfAbsent(e0())); } catch (UnsupportedOperationException tolerated) { } expectUnchanged(); }
@CollectionSize.Require(absent = ZERO) @MapFeature.Require({SUPPORTS_PUT, ALLOWS_NULL_VALUES}) public void testAddNullValue() { Collection<V> result = multimap().asMap().get(k0()); assertTrue(result.add(null)); assertTrue(multimap().containsEntry(k0(), null)); }
@CollectionSize.Require(absent = ZERO) @MapFeature.Require(SUPPORTS_REMOVE) public void testPropagatesRemoveLastElementToMultimap() { Collection<V> result = multimap().asMap().get(k0()); assertTrue(result.remove(v0())); assertGet(k0()); }
@SuppressWarnings("unchecked") @MapFeature.Require(SUPPORTS_REMOVE) @CollectionSize.Require(absent = ZERO) public void testRemoveFromInverseValuesRemovesFromInverse() { getMap().inverse().values().remove(k0()); expectMissing(e0()); }
@SuppressWarnings("unchecked") @MapFeature.Require(SUPPORTS_REMOVE) @CollectionSize.Require(absent = ZERO) public void testRemoveFromInverseKeySetRemovesFromForward() { getMap().inverse().keySet().remove(v0()); expectMissing(e0()); }