Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[COLLECTIONS-663] Update AbstractMultiValuedMap asMap() #110

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -878,8 +878,7 @@ class AsMapEntrySetIterator extends AbstractIteratorDecorator<Map.Entry<K, Colle
@Override
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));
return new UnmodifiableMapEntry<>(entry.getKey(), entry.getValue());
}
}
}
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