You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2014/03/25 23:01:08 UTC
svn commit: r1581553 [2/2] - in /commons/proper/collections/trunk/src:
main/java/org/apache/commons/collections4/
main/java/org/apache/commons/collections4/multimap/
test/java/org/apache/commons/collections4/multimap/ test/resources/data/test/
Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java?rev=1581553&view=auto
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java (added)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java Tue Mar 25 22:01:07 2014
@@ -0,0 +1,494 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.collections4.multimap;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.commons.collections4.AbstractObjectTest;
+import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.MultiValuedMap;
+import org.apache.commons.collections4.bag.HashBag;
+
+/**
+ * Abstract test class for {@link MultiValuedMap} contract and methods.
+ * <p>
+ * To use, extend this class and implement the {@link #makeObject} method and if
+ * necessary override the {@link #makeFullMap()} method.
+ *
+ * @since 4.1
+ * @version $Id$
+ */
+public abstract class AbstractMultiValuedMapTest<K, V> extends AbstractObjectTest {
+
+ public AbstractMultiValuedMapTest(String testName) {
+ super(testName);
+ }
+
+ @Override
+ abstract public MultiValuedMap<K, V> makeObject();
+
+ @Override
+ public String getCompatibilityVersion() {
+ return "4.1"; // MultiValuedMap has been added in version 4.1
+ }
+
+ /**
+ * Returns true if the maps produced by {@link #makeObject()} and
+ * {@link #makeFullMap()} support the <code>put</code> and
+ * <code>putAll</code> operations adding new mappings.
+ * <p>
+ * Default implementation returns true. Override if your collection class
+ * does not support put adding.
+ */
+ public boolean isAddSupported() {
+ return true;
+ }
+
+ /**
+ * Returns true if the maps produced by {@link #makeObject()} and
+ * {@link #makeFullMap()} support the <code>remove</code> and
+ * <code>clear</code> operations.
+ * <p>
+ * Default implementation returns true. Override if your collection class
+ * does not support removal operations.
+ */
+ public boolean isRemoveSupported() {
+ return true;
+ }
+
+ protected MultiValuedMap<K, V> makeFullMap() {
+ final MultiValuedMap<K, V> map = makeObject();
+ addSampleMappings(map);
+ return map;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void addSampleMappings(MultiValuedMap<? super K, ? super V> map) {
+ map.put((K) "one", (V) "uno");
+ map.put((K) "one", (V) "un");
+ map.put((K) "two", (V) "dos");
+ map.put((K) "two", (V) "deux");
+ map.put((K) "three", (V) "tres");
+ map.put((K) "three", (V) "trois");
+ }
+
+ public void testNoMappingReturnsNull() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ assertNull(map.get("whatever"));
+ }
+
+ public void testMultipleValues() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ Collection<V> col = map.get("one");
+ assertTrue(col.contains("uno"));
+ assertTrue(col.contains("un"));
+ }
+
+ public void testGet() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ assertTrue(map.get("one").contains("uno"));
+ assertTrue(map.get("one").contains("un"));
+ assertTrue(map.get("two").contains("dos"));
+ assertTrue(map.get("two").contains("deux"));
+ assertTrue(map.get("three").contains("tres"));
+ assertTrue(map.get("three").contains("trois"));
+ }
+
+ public void testContainsValue() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ assertTrue(map.containsValue("uno"));
+ assertTrue(map.containsValue("un"));
+ assertTrue(map.containsValue("dos"));
+ assertTrue(map.containsValue("deux"));
+ assertTrue(map.containsValue("tres"));
+ assertTrue(map.containsValue("trois"));
+ assertFalse(map.containsValue("quatro"));
+ }
+
+ public void testKeyContainsValue() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ assertTrue(map.containsMapping("one", "uno"));
+ assertTrue(map.containsMapping("one", "un"));
+ assertTrue(map.containsMapping("two", "dos"));
+ assertTrue(map.containsMapping("two", "deux"));
+ assertTrue(map.containsMapping("three", "tres"));
+ assertTrue(map.containsMapping("three", "trois"));
+ assertFalse(map.containsMapping("four", "quatro"));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testValues() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ final HashSet<V> expected = new HashSet<V>();
+ expected.add((V) "uno");
+ expected.add((V) "dos");
+ expected.add((V) "tres");
+ expected.add((V) "un");
+ expected.add((V) "deux");
+ expected.add((V) "trois");
+ final Collection<V> c = map.values();
+ assertEquals(6, c.size());
+ assertEquals(expected, new HashSet<V>(c));
+ }
+
+// public void testKeyedIterator() {
+// final MultiValuedMap<K, V> map = makeFullMap();
+// final ArrayList<Object> actual = new ArrayList<Object>(IteratorUtils.toList(map.iterator("one")));
+// final ArrayList<Object> expected = new ArrayList<Object>(Arrays.asList("uno", "un"));
+// assertEquals(expected, actual);
+// }
+
+ public void testRemoveAllViaIterator() {
+ if (!isRemoveSupported()) {
+ return;
+ }
+ final MultiValuedMap<K, V> map = makeFullMap();
+ for (final Iterator<?> i = map.values().iterator(); i.hasNext();) {
+ i.next();
+ i.remove();
+ }
+ assertNull(map.get("one"));
+ assertTrue(map.isEmpty());
+ }
+
+// public void testRemoveAllViaKeyedIterator() {
+// if (!isRemoveSupported()) {
+// return;
+// }
+// final MultiValuedMap<K, V> map = makeFullMap();
+// for (final Iterator<?> i = map.iterator("one"); i.hasNext();) {
+// i.next();
+// i.remove();
+// }
+// assertNull(map.get("one"));
+// assertEquals(4, map.size());
+// }
+
+ public void testEntriesCollectionIterator() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ Collection<V> values = new ArrayList<V>(map.values());
+ Iterator<Map.Entry<K, V>> iterator = map.entries().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry<K, V> entry = iterator.next();
+ assertTrue(map.containsMapping(entry.getKey(), entry.getValue()));
+ assertTrue(values.contains(entry.getValue()));
+ if (isRemoveSupported()) {
+ assertTrue(values.remove(entry.getValue()));
+ }
+ }
+ if (isRemoveSupported()) {
+ assertTrue(values.isEmpty());
+ }
+ }
+
+ public void testRemoveAllViaEntriesIterator() {
+ if (!isRemoveSupported()) {
+ return;
+ }
+ final MultiValuedMap<K, V> map = makeFullMap();
+ for (final Iterator<?> i = map.entries().iterator(); i.hasNext();) {
+ i.next();
+ i.remove();
+ }
+ assertNull(map.get("one"));
+ assertEquals(0, map.size());
+ }
+
+ public void testSize() {
+ assertEquals(6, makeFullMap().size());
+ }
+
+ // -----------------------------------------------------------------------
+ @SuppressWarnings("unchecked")
+ public void testMapEquals() {
+ if (!isAddSupported()) {
+ return;
+ }
+ final MultiValuedMap<K, V> one = makeObject();
+ final Integer value = Integer.valueOf(1);
+ one.put((K) "One", (V) value);
+ one.removeMapping((K) "One", (V) value);
+
+ final MultiValuedMap<K, V> two = makeObject();
+ assertEquals(two, one);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testSizeWithPutRemove() {
+ if (!isRemoveSupported() || !isAddSupported()) {
+ return;
+ }
+ final MultiValuedMap<K, V> map = makeObject();
+ assertEquals(0, map.size());
+ map.put((K) "A", (V) "AA");
+ assertEquals(1, map.size());
+ map.put((K) "B", (V) "BA");
+ assertEquals(2, map.size());
+ map.put((K) "B", (V) "BB");
+ assertEquals(3, map.size());
+ map.put((K) "B", (V) "BC");
+ assertEquals(4, map.size());
+ map.remove("A");
+ assertEquals(3, map.size());
+ map.removeMapping((K) "B", (V) "BC");
+ assertEquals(2, map.size());
+ }
+
+ public void testKeySetSize() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ assertEquals(3, map.keySet().size());
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testSize_Key() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ assertEquals(2, map.get("one").size());
+ assertEquals(2, map.get("two").size());
+ assertEquals(2, map.get("three").size());
+ if (!isAddSupported()) {
+ return;
+ }
+ map.put((K) "A", (V) "AA");
+ assertEquals(1, map.get("A").size());
+ //assertEquals(0, map.get("B").size());
+ map.put((K) "B", (V) "BA");
+ assertEquals(1, map.get("A").size());
+ assertEquals(1, map.get("B").size());
+ map.put((K) "B", (V) "BB");
+ assertEquals(1, map.get("A").size());
+ assertEquals(2, map.get("B").size());
+ map.put((K) "B", (V) "BC");
+ assertEquals(1, map.get("A").size());
+ assertEquals(3, map.get("B").size());
+ if (!isRemoveSupported()) {
+ return;
+ }
+ map.remove("A");
+ //assertEquals(0, map.get("A").size());
+ assertEquals(3, map.get("B").size());
+ map.removeMapping((K) "B", (V) "BC");
+ //assertEquals(0, map.get("A").size());
+ assertEquals(2, map.get("B").size());
+ }
+
+// @SuppressWarnings("unchecked")
+// public void testIterator_Key() {
+// final MultiValuedMap<K, V> map = makeFullMap();
+// Iterator<V> it = map.iterator("one");
+// assertEquals(true, it.hasNext());
+// Set<V> values = new HashSet<V>();
+// while (it.hasNext()) {
+// values.add(it.next());
+// }
+// assertEquals(true, values.contains("un"));
+// assertEquals(true, values.contains("uno"));
+// assertEquals(false, map.iterator("A").hasNext());
+// assertEquals(false, map.iterator("A").hasNext());
+// if (!isAddSupported()) {
+// return;
+// }
+// map.put((K) "A", (V) "AA");
+// it = map.iterator("A");
+// assertEquals(true, it.hasNext());
+// it.next();
+// assertEquals(false, it.hasNext());
+// }
+
+ @SuppressWarnings("unchecked")
+ public void testContainsValue_Key() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ assertEquals(true, map.containsMapping("one", (V) "uno"));
+ assertEquals(false, map.containsMapping("two", (V) "2"));
+ if (!isAddSupported()) {
+ return;
+ }
+ map.put((K) "A", (V) "AA");
+ assertEquals(true, map.containsMapping("A", (V) "AA"));
+ assertEquals(false, map.containsMapping("A", (V) "AB"));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testPutAll_Map1() {
+ if (!isAddSupported()) {
+ return;
+ }
+ final MultiValuedMap<K, V> original = makeObject();
+ original.put((K) "key", (V) "object1");
+ original.put((K) "key", (V) "object2");
+
+ final MultiValuedMap<K, V> test = makeObject();
+ test.put((K) "keyA", (V) "objectA");
+ test.put((K) "key", (V) "object0");
+ test.putAll(original);
+
+ assertEquals(2, test.keySet().size());
+ assertEquals(4, test.size());
+ assertEquals(1, test.get("keyA").size());
+ assertEquals(3, test.get("key").size());
+ assertEquals(true, test.containsValue("objectA"));
+ assertEquals(true, test.containsValue("object0"));
+ assertEquals(true, test.containsValue("object1"));
+ assertEquals(true, test.containsValue("object2"));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testPutAll_Map2() {
+ if (!isAddSupported()) {
+ return;
+ }
+ final Map<K, V> original = new HashMap<K, V>();
+ original.put((K) "keyX", (V) "object1");
+ original.put((K) "keyY", (V) "object2");
+
+ final MultiValuedMap<K, V> test = makeObject();
+ test.put((K) "keyA", (V) "objectA");
+ test.put((K) "keyX", (V) "object0");
+ test.putAll(original);
+
+ assertEquals(3, test.keySet().size());
+ assertEquals(4, test.size());
+ assertEquals(1, test.get("keyA").size());
+ assertEquals(2, test.get("keyX").size());
+ assertEquals(1, test.get("keyY").size());
+ assertEquals(true, test.containsValue("objectA"));
+ assertEquals(true, test.containsValue("object0"));
+ assertEquals(true, test.containsValue("object1"));
+ assertEquals(true, test.containsValue("object2"));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testPutAll_KeyIterable() {
+ if (!isAddSupported()) {
+ return;
+ }
+ final MultiValuedMap<K, V> map = makeObject();
+ Collection<V> coll = (Collection<V>) Arrays.asList("X", "Y", "Z");
+
+ assertEquals(true, map.putAll((K) "A", coll));
+ assertEquals(3, map.get("A").size());
+ assertEquals(true, map.containsMapping("A", (V) "X"));
+ assertEquals(true, map.containsMapping("A", (V) "Y"));
+ assertEquals(true, map.containsMapping("A", (V) "Z"));
+
+ assertEquals(false, map.putAll((K) "A", null));
+ assertEquals(3, map.get("A").size());
+ assertEquals(true, map.containsMapping("A", (V) "X"));
+ assertEquals(true, map.containsMapping("A", (V) "Y"));
+ assertEquals(true, map.containsMapping("A", (V) "Z"));
+
+ assertEquals(false, map.putAll((K) "A", new ArrayList<V>()));
+ assertEquals(3, map.get("A").size());
+ assertEquals(true, map.containsMapping("A", (V) "X"));
+ assertEquals(true, map.containsMapping("A", (V) "Y"));
+ assertEquals(true, map.containsMapping("A", (V) "Z"));
+
+ coll = (Collection<V>) Arrays.asList("M");
+ assertEquals(true, map.putAll((K) "A", coll));
+ assertEquals(4, map.get("A").size());
+ assertEquals(true, map.containsMapping("A", (V) "X"));
+ assertEquals(true, map.containsMapping("A", (V) "Y"));
+ assertEquals(true, map.containsMapping("A", (V) "Z"));
+ assertEquals(true, map.containsMapping("A", (V) "M"));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testRemove_KeyItem() {
+ if (!isRemoveSupported() || !isAddSupported()) {
+ return;
+ }
+ final MultiValuedMap<K, V> map = makeObject();
+ map.put((K) "A", (V) "AA");
+ map.put((K) "A", (V) "AB");
+ map.put((K) "A", (V) "AC");
+ assertEquals(false, map.removeMapping((K) "C", (V) "CA"));
+ assertEquals(false, map.removeMapping((K) "A", (V) "AD"));
+ assertEquals(true, map.removeMapping((K) "A", (V) "AC"));
+ assertEquals(true, map.removeMapping((K) "A", (V) "AB"));
+ assertEquals(true, map.removeMapping((K) "A", (V) "AA"));
+ //assertEquals(new MultiValuedHashMap<K, V>(), map);
+ }
+
+ public void testKeysBag() {
+ MultiValuedMap<K, V> map = makeFullMap();
+ Bag<K> keyBag = map.keys();
+ assertEquals(2, keyBag.getCount("one"));
+ assertEquals(2, keyBag.getCount("two"));
+ assertEquals(2, keyBag.getCount("three"));
+ assertEquals(6, keyBag.size());
+ }
+
+ public void testKeysBagIterator() {
+ MultiValuedMap<K, V> map = makeFullMap();
+ Collection<K> col = new ArrayList<K>();
+ Iterator<K> it = map.keys().iterator();
+ while (it.hasNext()) {
+ col.add(it.next());
+ }
+ Bag<K> bag = new HashBag<K>(col);
+ assertEquals(2, bag.getCount("one"));
+ assertEquals(2, bag.getCount("two"));
+ assertEquals(2, bag.getCount("three"));
+ assertEquals(6, bag.size());
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testKeysBagContainsAll() {
+ MultiValuedMap<K, V> map = makeFullMap();
+ Bag<K> keyBag = map.keys();
+ Collection<K> col = (Collection<K>) Arrays.asList("one", "two", "three", "one", "two", "three");
+ assertTrue(keyBag.containsAll(col));
+ }
+
+// public void testMapEqulas() {
+// MultiValuedMap<K, V> map1 = makeFullMap();
+// MultiValuedMap<K, V> map2 = makeFullMap();
+// assertEquals(true, map1.equals(map2));
+// }
+
+ // -----------------------------------------------------------------------
+ // Manual serialization testing as this class cannot easily
+ // extend the AbstractTestMap
+ // -----------------------------------------------------------------------
+
+ public void testEmptyMapCompatibility() throws Exception {
+ final MultiValuedMap<?, ?> map = makeObject();
+ final MultiValuedMap<?, ?> map2 = (MultiValuedMap<?, ?>) readExternalFormFromDisk(getCanonicalEmptyCollectionName(map));
+ assertEquals("Map is empty", 0, map2.size());
+ }
+
+ public void testFullMapCompatibility() throws Exception {
+ final MultiValuedMap<?, ?> map = (MultiValuedMap<?, ?>) makeFullMap();
+ final MultiValuedMap<?, ?> map2 = (MultiValuedMap<?, ?>) readExternalFormFromDisk(getCanonicalFullCollectionName(map));
+ assertEquals("Map is the right size", map.size(), map2.size());
+ for (final Object key : map.keySet()) {
+ assertEquals("Map had inequal elements", map.get(key), map2.get(key));
+ if (isRemoveSupported()) {
+ map2.remove(key);
+ }
+ }
+ if (isRemoveSupported()) {
+ assertEquals("Map had extra values", 0, map2.size());
+ }
+ }
+
+}
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java
------------------------------------------------------------------------------
svn:keywords = Id Revision HeadURL
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedHashMapTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedHashMapTest.java?rev=1581553&view=auto
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedHashMapTest.java (added)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedHashMapTest.java Tue Mar 25 22:01:07 2014
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.collections4.multimap;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedList;
+
+import org.apache.commons.collections4.MultiValuedMap;
+
+/**
+ * Test MultValuedHashMap
+ *
+ * @since 4.1
+ * @version $Id$
+ */
+public class MultiValuedHashMapTest<K, V> extends AbstractMultiValuedMapTest<K, V> {
+
+ public MultiValuedHashMapTest(String testName) {
+ super(testName);
+ }
+
+ @Override
+ public MultiValuedMap<K, V> makeObject() {
+ final MultiValuedMap<K, V> m = new MultiValuedHashMap<K, V>();
+ return m;
+ }
+
+ private <C extends Collection<V>> MultiValuedHashMap<K, V> createTestMap(final Class<C> collectionClass) {
+ final MultiValuedHashMap<K, V> map =
+ (MultiValuedHashMap<K, V>) MultiValuedHashMap.<K, V, C> multiValuedMap(collectionClass);
+ addSampleMappings(map);
+ return map;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testValueCollectionType() {
+ final MultiValuedHashMap<K, V> map = createTestMap(LinkedList.class);
+ assertTrue(map.get("one") instanceof LinkedList);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testPutWithList() {
+ final MultiValuedHashMap<K, V> test = (MultiValuedHashMap<K, V>) MultiValuedHashMap.multiValuedMap(ArrayList.class);
+ assertEquals("a", test.put((K) "A", (V) "a"));
+ assertEquals("b", test.put((K) "A", (V) "b"));
+ assertEquals(1, test.keySet().size());
+ assertEquals(2, test.size("A"));
+ assertEquals(2, test.size());
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testPutWithSet() {
+ final MultiValuedHashMap<K, V> test = (MultiValuedHashMap<K, V>) MultiValuedHashMap.multiValuedMap(HashSet.class);
+ assertEquals("a", test.put((K) "A", (V) "a"));
+ assertEquals("b", test.put((K) "A", (V) "b"));
+ assertEquals(null, test.put((K) "A", (V) "a"));
+ assertEquals(1, test.keySet().size());
+ assertEquals(2, test.size("A"));
+ assertEquals(2, test.size());
+ }
+
+// public void testCreate() throws Exception {
+// writeExternalFormToDisk((java.io.Serializable) makeObject(),
+// "src/test/resources/data/test/MultiValuedHashMap.emptyCollection.version4.1.obj");
+// writeExternalFormToDisk((java.io.Serializable) makeFullMap(),
+// "src/test/resources/data/test/MultiValuedHashMap.fullCollection.version4.1.obj");
+// }
+
+}
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedHashMapTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedHashMapTest.java
------------------------------------------------------------------------------
svn:keywords = Id Revision HeadURL
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedHashMapTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/TransformedMultiValuedMapTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/TransformedMultiValuedMapTest.java?rev=1581553&view=auto
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/TransformedMultiValuedMapTest.java (added)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/TransformedMultiValuedMapTest.java Tue Mar 25 22:01:07 2014
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.collections4.multimap;
+
+import org.apache.commons.collections4.MultiValuedMap;
+import org.apache.commons.collections4.Transformer;
+import org.apache.commons.collections4.TransformerUtils;
+import org.apache.commons.collections4.collection.TransformedCollectionTest;
+import org.apache.commons.collections4.multimap.TransformedMultiValuedMap;
+
+/**
+ * Tests for TransformedMultiValuedMap
+ *
+ * @since 4.1
+ * @version $Id$
+ */
+public class TransformedMultiValuedMapTest<K, V> extends AbstractMultiValuedMapTest<K, V> {
+
+ public TransformedMultiValuedMapTest(String testName) {
+ super(testName);
+ }
+
+ @Override
+ public MultiValuedMap<K, V> makeObject() {
+ return TransformedMultiValuedMap.transformingMap(new MultiValuedHashMap<K, V>(),
+ TransformerUtils.<K> nopTransformer(), TransformerUtils.<V> nopTransformer());
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testKeyTransformedMap() {
+ final Object[] els = new Object[] { "1", "3", "5", "7", "2", "4", "6" };
+
+ MultiValuedMap<K, V> map = TransformedMultiValuedMap.transformingMap(
+ new MultiValuedHashMap<K, V>(),
+ (Transformer<? super K, ? extends K>) TransformedCollectionTest.STRING_TO_INTEGER_TRANSFORMER,
+ null);
+ assertEquals(0, map.size());
+ for (int i = 0; i < els.length; i++) {
+ map.put((K) els[i], (V) els[i]);
+ assertEquals(i + 1, map.size());
+ assertEquals(true, map.containsKey(Integer.valueOf((String) els[i])));
+ assertEquals(false, map.containsKey(els[i]));
+ assertEquals(true, map.containsValue(els[i]));
+ assertEquals(true, map.get(Integer.valueOf((String) els[i])).contains(els[i]));
+ }
+
+ assertEquals(null, map.remove(els[0]));
+ assertEquals(true, map.remove(Integer.valueOf((String) els[0])).contains(els[0]));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testValueTransformedMap() {
+ final Object[] els = new Object[] { "1", "3", "5", "7", "2", "4", "6" };
+
+ MultiValuedMap<K, V> map = TransformedMultiValuedMap.transformingMap(
+ new MultiValuedHashMap<K, V>(), null,
+ (Transformer<? super V, ? extends V>) TransformedCollectionTest.STRING_TO_INTEGER_TRANSFORMER);
+ assertEquals(0, map.size());
+ for (int i = 0; i < els.length; i++) {
+ map.put((K) els[i], (V) els[i]);
+ assertEquals(i + 1, map.size());
+ assertEquals(true, map.containsValue(Integer.valueOf((String) els[i])));
+ assertEquals(false, map.containsValue(els[i]));
+ assertEquals(true, map.containsKey(els[i]));
+ assertEquals(true, map.get(els[i]).contains(Integer.valueOf((String) els[i])));
+ }
+ assertEquals(true, map.remove(els[0]).contains(Integer.valueOf((String) els[0])));
+ }
+
+ // -----------------------------------------------------------------------
+ @SuppressWarnings("unchecked")
+ public void testFactory_Decorate() {
+ final MultiValuedMap<K, V> base = new MultiValuedHashMap<K, V>();
+ base.put((K) "A", (V) "1");
+ base.put((K) "B", (V) "2");
+ base.put((K) "C", (V) "3");
+
+ final MultiValuedMap<K, V> trans = TransformedMultiValuedMap
+ .transformingMap(
+ base,
+ null,
+ (Transformer<? super V, ? extends V>) TransformedCollectionTest.STRING_TO_INTEGER_TRANSFORMER);
+ assertEquals(3, trans.size());
+ assertEquals(true, trans.get("A").contains("1"));
+ assertEquals(true, trans.get("B").contains("2"));
+ assertEquals(true, trans.get("C").contains("3"));
+ trans.put((K) "D", (V) "4");
+ assertEquals(true, trans.get("D").contains(Integer.valueOf(4)));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testFactory_decorateTransform() {
+ final MultiValuedMap<K, V> base = new MultiValuedHashMap<K, V>();
+ base.put((K) "A", (V) "1");
+ base.put((K) "B", (V) "2");
+ base.put((K) "C", (V) "3");
+
+ final MultiValuedMap<K, V> trans = TransformedMultiValuedMap
+ .transformedMap(
+ base,
+ null,
+ (Transformer<? super V, ? extends V>) TransformedCollectionTest.STRING_TO_INTEGER_TRANSFORMER);
+ assertEquals(3, trans.size());
+ assertEquals(true, trans.get("A").contains(Integer.valueOf(1)));
+ assertEquals(true, trans.get("B").contains(Integer.valueOf(2)));
+ assertEquals(true, trans.get("C").contains(Integer.valueOf(3)));
+ trans.put((K) "D", (V) "4");
+ assertEquals(true, trans.get("D").contains(Integer.valueOf(4)));
+ }
+
+// public void testCreate() throws Exception {
+// writeExternalFormToDisk((java.io.Serializable) makeObject(),
+// "src/test/resources/data/test/TransformedMultiValuedMap.emptyCollection.version4.1.obj");
+// writeExternalFormToDisk((java.io.Serializable) makeFullMap(),
+// "src/test/resources/data/test/TransformedMultiValuedMap.fullCollection.version4.1.obj");
+// }
+
+}
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/TransformedMultiValuedMapTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/TransformedMultiValuedMapTest.java
------------------------------------------------------------------------------
svn:keywords = Id Revision HeadURL
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/TransformedMultiValuedMapTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/UnmodifiableMultiValuedMapTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/UnmodifiableMultiValuedMapTest.java?rev=1581553&view=auto
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/UnmodifiableMultiValuedMapTest.java (added)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/UnmodifiableMultiValuedMapTest.java Tue Mar 25 22:01:07 2014
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.collections4.multimap;
+
+import org.apache.commons.collections4.MultiValuedMap;
+import org.apache.commons.collections4.Unmodifiable;
+
+/**
+ * Tests for UnmodifiableMultiValuedMap
+ *
+ * @since 4.1
+ * @version $Id$
+ */
+public class UnmodifiableMultiValuedMapTest<K, V> extends AbstractMultiValuedMapTest<K, V> {
+
+ public UnmodifiableMultiValuedMapTest(String testName) {
+ super(testName);
+ }
+
+ public boolean isAddSupported() {
+ return false;
+ }
+
+ public boolean isRemoveSupported() {
+ return false;
+ }
+
+ @Override
+ public MultiValuedMap<K, V> makeObject() {
+ return UnmodifiableMultiValuedMap.<K, V> unmodifiableMultiValuedMap(new MultiValuedHashMap<K, V>());
+ }
+
+ protected MultiValuedMap<K, V> makeFullMap() {
+ final MultiValuedMap<K, V> map = new MultiValuedHashMap<K, V>();
+ addSampleMappings(map);
+ return UnmodifiableMultiValuedMap.<K, V> unmodifiableMultiValuedMap(map);
+ }
+
+ public void testUnmodifiable() {
+ assertTrue(makeObject() instanceof Unmodifiable);
+ assertTrue(makeFullMap() instanceof Unmodifiable);
+ }
+
+ public void testDecorateFactory() {
+ final MultiValuedMap<K, V> map = makeFullMap();
+ assertSame(map, UnmodifiableMultiValuedMap.unmodifiableMultiValuedMap(map));
+ }
+
+ public void testDecoratorFactoryNullMap() {
+ try {
+ UnmodifiableMultiValuedMap.unmodifiableMultiValuedMap(null);
+ fail();
+ } catch (IllegalArgumentException e) {
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testAddException() {
+ MultiValuedMap<K, V> map = makeObject();
+ try {
+ map.put((K) "one", (V) "uno");
+ fail();
+ } catch (UnsupportedOperationException e) {
+ }
+ }
+
+// public void testCreate() throws Exception {
+// writeExternalFormToDisk((java.io.Serializable) makeObject(),
+// "src/test/resources/data/test/UnmodifiableMultiValuedMap.emptyCollection.version4.1.obj");
+// writeExternalFormToDisk((java.io.Serializable) makeFullMap(),
+// "src/test/resources/data/test/UnmodifiableMultiValuedMap.fullCollection.version4.1.obj");
+// }
+
+}
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/UnmodifiableMultiValuedMapTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/UnmodifiableMultiValuedMapTest.java
------------------------------------------------------------------------------
svn:keywords = Id Revision HeadURL
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/UnmodifiableMultiValuedMapTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/proper/collections/trunk/src/test/resources/data/test/MultiValuedHashMap.emptyCollection.version4.1.obj
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/resources/data/test/MultiValuedHashMap.emptyCollection.version4.1.obj?rev=1581553&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/proper/collections/trunk/src/test/resources/data/test/MultiValuedHashMap.emptyCollection.version4.1.obj
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: commons/proper/collections/trunk/src/test/resources/data/test/MultiValuedHashMap.fullCollection.version4.1.obj
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/resources/data/test/MultiValuedHashMap.fullCollection.version4.1.obj?rev=1581553&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/proper/collections/trunk/src/test/resources/data/test/MultiValuedHashMap.fullCollection.version4.1.obj
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: commons/proper/collections/trunk/src/test/resources/data/test/TransformedMultiValuedMap.emptyCollection.version4.1.obj
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/resources/data/test/TransformedMultiValuedMap.emptyCollection.version4.1.obj?rev=1581553&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/proper/collections/trunk/src/test/resources/data/test/TransformedMultiValuedMap.emptyCollection.version4.1.obj
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: commons/proper/collections/trunk/src/test/resources/data/test/TransformedMultiValuedMap.fullCollection.version4.1.obj
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/resources/data/test/TransformedMultiValuedMap.fullCollection.version4.1.obj?rev=1581553&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/proper/collections/trunk/src/test/resources/data/test/TransformedMultiValuedMap.fullCollection.version4.1.obj
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableMultiValuedMap.emptyCollection.version4.1.obj
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableMultiValuedMap.emptyCollection.version4.1.obj?rev=1581553&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableMultiValuedMap.emptyCollection.version4.1.obj
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableMultiValuedMap.fullCollection.version4.1.obj
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableMultiValuedMap.fullCollection.version4.1.obj?rev=1581553&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableMultiValuedMap.fullCollection.version4.1.obj
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream