Author: scolebourne Date: Sat Oct 28 05:30:27 2006 New Revision: 468685 URL: http://svn.apache.org/viewvc?view=rev&rev=468685 Log: COLLECTIONS-228 - MultiValueMap put and putAll do not return the correct values
Modified: jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java Modified: jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java?view=diff&rev=468685&r1=468684&r2=468685 ============================================================================== --- jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java (original) +++ jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java Sat Oct 28 05:30:27 2006 @@ -206,12 +206,12 @@ boolean result = false; Collection coll = getCollection(key); if (coll == null) { - coll = createCollection(1); - result = coll.add(value); + coll = createCollection(1); // might produce a non-empty collection + coll.add(value); if (coll.size() > 0) { // only add if non-zero size to maintain class state getMap().put(key, coll); - result = false; + result = true; // map definitely changed } } else { result = coll.add(value); @@ -308,19 +308,20 @@ if (values == null || values.size() == 0) { return false; } + boolean result = false; Collection coll = getCollection(key); if (coll == null) { - coll = createCollection(values.size()); - boolean result = coll.addAll(values); + coll = createCollection(values.size()); // might produce a non-empty collection + coll.addAll(values); if (coll.size() > 0) { // only add if non-zero size to maintain class state getMap().put(key, coll); - result = false; + result = true; // map definitely changed } - return result; } else { - return coll.addAll(values); + result = coll.addAll(values); } + return result; } /** Modified: jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java?view=diff&rev=468685&r1=468684&r2=468685 ============================================================================== --- jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java (original) +++ jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java Sat Oct 28 05:30:27 2006 @@ -31,7 +31,6 @@ import org.apache.commons.collections.IteratorUtils; import org.apache.commons.collections.MultiMap; -import org.apache.commons.collections.TestMultiHashMap; /** * TestMultiValueMap. @@ -47,11 +46,11 @@ } public static Test suite() { - return new TestSuite(TestMultiHashMap.class); + return new TestSuite(TestMultiValueMap.class); } public static void main(String args[]) { - String[] testCaseName = { TestMultiHashMap.class.getName()}; + String[] testCaseName = { TestMultiValueMap.class.getName()}; junit.textui.TestRunner.main(testCaseName); } @@ -202,9 +201,9 @@ map.put("B", "BC"); assertEquals(2, map.size()); map.remove("A"); - assertEquals(2, map.size()); + assertEquals(1, map.size()); map.remove("B", "BC"); - assertEquals(2, map.size()); + assertEquals(1, map.size()); } public void testSize_Key() { @@ -248,6 +247,25 @@ map.put("A", "AA"); assertEquals(true, map.containsValue("A", "AA")); assertEquals(false, map.containsValue("A", "AB")); + } + + public void testPutWithList() { + MultiValueMap test = MultiValueMap.decorate(new HashMap(), ArrayList.class); + assertEquals("a", test.put("A", "a")); + assertEquals("b", test.put("A", "b")); + assertEquals(1, test.size()); + assertEquals(2, test.size("A")); + assertEquals(2, test.totalSize()); + } + + public void testPutWithSet() { + MultiValueMap test = MultiValueMap.decorate(new HashMap(), HashSet.class); + assertEquals("a", test.put("A", "a")); + assertEquals("b", test.put("A", "b")); + assertEquals(null, test.put("A", "a")); + assertEquals(1, test.size()); + assertEquals(2, test.size("A")); + assertEquals(2, test.totalSize()); } public void testPutAll_Map1() { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]