Skip to content

Commit

Permalink
Updated AbstractMultiValuedMap asMap().
Browse files Browse the repository at this point in the history
  • Loading branch information
dota17 committed Apr 28, 2020
1 parent 23bc4e7 commit d63a3ca
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -879,7 +879,8 @@ class AsMapEntrySetIterator extends AbstractIteratorDecorator<Map.Entry<K, Colle
public Map.Entry<K, Collection<V>> next() {
final Map.Entry<K, Collection<V>> entry = super.next();
final K key = entry.getKey();
return new UnmodifiableMapEntry<>(key, wrappedCollection(key));
final Collection<V> value = entry.getValue();
return new UnmodifiableMapEntry<>(key, value);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -531,14 +531,14 @@ public void testSize_Key() {
@SuppressWarnings("unchecked")
public void testContainsValue_Key() {
final MultiValuedMap<K, V> map = makeFullMap();
assertEquals(true, map.containsMapping("one", "uno"));
assertEquals(false, map.containsMapping("two", "2"));
assertTrue(map.containsMapping("one", "uno"));
assertFalse(map.containsMapping("two", "2"));
if (!isAddSupported()) {
return;
}
map.put((K) "A", (V) "AA");
assertEquals(true, map.containsMapping("A", "AA"));
assertEquals(false, map.containsMapping("A", "AB"));
assertTrue(map.containsMapping("A", "AA"));
assertFalse(map.containsMapping("A", "AB"));
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -567,10 +567,10 @@ public void testPutAll_Map1() {
assertEquals(4, test.size());
assertEquals(1, test.get((K) "keyA").size());
assertEquals(3, test.get((K) "key").size());
assertEquals(true, test.containsValue("objectA"));
assertEquals(true, test.containsValue("object0"));
assertEquals(true, test.containsValue("object1"));
assertEquals(true, test.containsValue("object2"));
assertTrue(test.containsValue("objectA"));
assertTrue(test.containsValue("object0"));
assertTrue(test.containsValue("object1"));
assertTrue(test.containsValue("object2"));
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -600,10 +600,10 @@ public void testPutAll_Map2() {
assertEquals(1, test.get((K) "keyA").size());
assertEquals(2, test.get((K) "keyX").size());
assertEquals(1, test.get((K) "keyY").size());
assertEquals(true, test.containsValue("objectA"));
assertEquals(true, test.containsValue("object0"));
assertEquals(true, test.containsValue("object1"));
assertEquals(true, test.containsValue("object2"));
assertTrue(test.containsValue("objectA"));
assertTrue(test.containsValue("object0"));
assertTrue(test.containsValue("object1"));
assertTrue(test.containsValue("object2"));
}

@SuppressWarnings("unchecked")
Expand All @@ -614,11 +614,11 @@ public void testPutAll_KeyIterable() {
final MultiValuedMap<K, V> map = makeObject();
Collection<V> coll = (Collection<V>) Arrays.asList("X", "Y", "Z");

assertEquals(true, map.putAll((K) "A", coll));
assertTrue(map.putAll((K) "A", coll));
assertEquals(3, map.get((K) "A").size());
assertEquals(true, map.containsMapping("A", "X"));
assertEquals(true, map.containsMapping("A", "Y"));
assertEquals(true, map.containsMapping("A", "Z"));
assertTrue(map.containsMapping("A", "X"));
assertTrue(map.containsMapping("A", "Y"));
assertTrue(map.containsMapping("A", "Z"));

try {
map.putAll((K) "A", null);
Expand All @@ -628,23 +628,23 @@ public void testPutAll_KeyIterable() {
}

assertEquals(3, map.get((K) "A").size());
assertEquals(true, map.containsMapping("A", "X"));
assertEquals(true, map.containsMapping("A", "Y"));
assertEquals(true, map.containsMapping("A", "Z"));
assertTrue(map.containsMapping("A", "X"));
assertTrue(map.containsMapping("A", "Y"));
assertTrue(map.containsMapping("A", "Z"));

assertEquals(false, map.putAll((K) "A", new ArrayList<V>()));
assertFalse(map.putAll((K) "A", new ArrayList<V>()));
assertEquals(3, map.get((K) "A").size());
assertEquals(true, map.containsMapping("A", "X"));
assertEquals(true, map.containsMapping("A", "Y"));
assertEquals(true, map.containsMapping("A", "Z"));
assertTrue(map.containsMapping("A", "X"));
assertTrue(map.containsMapping("A", "Y"));
assertTrue(map.containsMapping("A", "Z"));

coll = (Collection<V>) Arrays.asList("M");
assertEquals(true, map.putAll((K) "A", coll));
assertTrue(map.putAll((K) "A", coll));
assertEquals(4, map.get((K) "A").size());
assertEquals(true, map.containsMapping("A", "X"));
assertEquals(true, map.containsMapping("A", "Y"));
assertEquals(true, map.containsMapping("A", "Z"));
assertEquals(true, map.containsMapping("A", "M"));
assertTrue(map.containsMapping("A", "X"));
assertTrue(map.containsMapping("A", "Y"));
assertTrue(map.containsMapping("A", "Z"));
assertTrue(map.containsMapping("A", "M"));
}

@SuppressWarnings("unchecked")
Expand All @@ -656,11 +656,11 @@ public void testRemove_KeyItem() {
map.put((K) "A", (V) "AA");
map.put((K) "A", (V) "AB");
map.put((K) "A", (V) "AC");
assertEquals(false, map.removeMapping("C", "CA"));
assertEquals(false, map.removeMapping("A", "AD"));
assertEquals(true, map.removeMapping("A", "AC"));
assertEquals(true, map.removeMapping("A", "AB"));
assertEquals(true, map.removeMapping("A", "AA"));
assertFalse(map.removeMapping("C", "CA"));
assertFalse(map.removeMapping("A", "AD"));
assertTrue(map.removeMapping("A", "AC"));
assertTrue(map.removeMapping("A", "AB"));
assertTrue(map.removeMapping("A", "AA"));
//assertEquals(new MultiValuedHashMap<K, V>(), map);
}

Expand Down Expand Up @@ -748,6 +748,50 @@ public void testAsMapRemove() {
assertEquals(4, getMap().size());
}

public void testAsMapValues() {
if (!isAddSupported() || isHashSetValue()) {
return;
}
final MultiValuedMap<K, V> multiMap = makeObject();
multiMap.put((K) "A", (V) "W");
multiMap.put((K) "A", (V) "X");
multiMap.put((K) "A", (V) "F");
multiMap.put((K) "B", (V) "Q");
multiMap.put((K) "B", (V) "Q");
multiMap.put((K) "B", (V) "L");
assertEquals("{A=[W, X, F], B=[Q, Q, L]}", multiMap.toString());
for (Collection<V> list : multiMap.asMap().values()) {
for (Iterator<V> it = list.iterator(); it.hasNext();) {
it.next();
it.remove();
}
}
assertEquals("{A=[], B=[]}", multiMap.toString());
}

public void testAsMapEntrySet() {
if (!isAddSupported() || isHashSetValue()) {
return;
}

final MultiValuedMap<K, V> multiMap = makeObject();
multiMap.put((K) "A", (V) "W");
multiMap.put((K) "A", (V) "X");
multiMap.put((K) "A", (V) "F");
multiMap.put((K) "B", (V) "Q");
multiMap.put((K) "B", (V) "Q");
multiMap.put((K) "B", (V) "L");
assertEquals("{A=[W, X, F], B=[Q, Q, L]}", multiMap.toString());
Map<K, Collection<V>> asMap = multiMap.asMap();
for (Map.Entry<K, Collection<V>> entry : asMap.entrySet()) {
for (Iterator<V> it = entry.getValue().iterator(); it.hasNext();) {
it.next();
it.remove();
}
}
assertEquals("{A=[], B=[]}", multiMap.toString());
}

public void testMapIterator() {
resetEmpty();
MapIterator<K, V> mapIt = getMap().mapIterator();
Expand Down Expand Up @@ -810,7 +854,7 @@ public void testMultiValuedMapIterator() {
}

if (!isHashSetValue() && isAddSupported()) {
assertTrue(it.hasNext() );
assertTrue(it.hasNext());
assertEquals("one", it.next());
assertEquals("one", it.getKey());
assertEquals("uno", it.getValue());
Expand Down Expand Up @@ -1198,7 +1242,7 @@ public Collection<V>[] getSampleValues() {
final V[] sampleValues = AbstractMultiValuedMapTest.this.getSampleValues();
final Collection<V>[] colArr = new Collection[3];
for (int i = 0; i < 3; i++) {
final Collection<V> coll = Arrays.asList(sampleValues[i*2], sampleValues[i*2 + 1]);
final Collection<V> coll = Arrays.asList(sampleValues[i * 2], sampleValues[i * 2 + 1]);
colArr[i] = isSetValuedMap ? new HashSet<>(coll) : coll;
}
return colArr;
Expand All @@ -1210,7 +1254,7 @@ public Collection<V>[] getNewSampleValues() {
// See comment in getSampleValues() to understand why we are calling makeObject() and not
// getMap(). See COLLECTIONS-661 for more.
final boolean isSetValuedMap = AbstractMultiValuedMapTest.this.makeObject() instanceof SetValuedMap;
final Object[] sampleValues = { "ein", "ek", "zwei", "duey", "drei", "teen" };
final Object[] sampleValues = { "ein", "ek", "zwei", "duey", "drei", "teen"};
final Collection<V>[] colArr = new Collection[3];
for (int i = 0; i < 3; i++) {
final Collection<V> coll = Arrays.asList((V) sampleValues[i * 2], (V) sampleValues[i * 2 + 1]);
Expand Down

0 comments on commit d63a3ca

Please sign in to comment.