diff --git a/src/test/org/apache/commons/collections/AbstractTestBidiMap.java b/src/test/org/apache/commons/collections/AbstractTestBidiMap.java index d6bfd46db..320931f41 100644 --- a/src/test/org/apache/commons/collections/AbstractTestBidiMap.java +++ b/src/test/org/apache/commons/collections/AbstractTestBidiMap.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/Attic/AbstractTestBidiMap.java,v 1.7 2003/11/02 19:48:39 scolebourne Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/Attic/AbstractTestBidiMap.java,v 1.8 2003/11/08 18:46:57 scolebourne Exp $ * ==================================================================== * * The Apache Software License, Version 1.1 @@ -69,7 +69,7 @@ import org.apache.commons.collections.iterators.MapIterator; /** * Abstract test class for {@link BidiMap} methods and contracts. * - * @version $Revision: 1.7 $ $Date: 2003/11/02 19:48:39 $ + * @version $Revision: 1.8 $ $Date: 2003/11/08 18:46:57 $ * * @author Matthew Hawthorne * @author Stephen Colebourne @@ -242,6 +242,8 @@ public abstract class AbstractTestBidiMap extends AbstractTestMap { //----------------------------------------------------------------------- public void testBidiModifyEntrySet() { + if (isSetValueSupported() == false) return; + modifyEntrySet(makeFullBidiMap()); modifyEntrySet(makeFullBidiMap().inverseBidiMap()); } @@ -288,8 +290,8 @@ public abstract class AbstractTestBidiMap extends AbstractTestMap { remove(makeFullBidiMap(), entries[0][0]); remove(makeFullBidiMap().inverseBidiMap(), entries[0][1]); - removeKey(makeFullBidiMap(), entries[0][1]); - removeKey(makeFullBidiMap().inverseBidiMap(), entries[0][0]); + removeValue(makeFullBidiMap(), entries[0][1]); + removeValue(makeFullBidiMap().inverseBidiMap(), entries[0][0]); } private final void remove(BidiMap map, Object key) { @@ -298,8 +300,8 @@ public abstract class AbstractTestBidiMap extends AbstractTestMap { assertNull("Value was not removed.", map.getKey(value)); } - private final void removeKey(BidiMap map, Object value) { - final Object key = map.removeKey(value); + private final void removeValue(BidiMap map, Object value) { + final Object key = map.removeValue(value); assertTrue("Key was not removed.", !map.containsKey(key)); assertNull("Value was not removed.", map.getKey(value)); } @@ -484,8 +486,8 @@ public abstract class AbstractTestBidiMap extends AbstractTestMap { super("TestBidiMapIterator"); } - protected Object addSetValue() { - return AbstractTestBidiMap.this.getNewSampleValues()[0]; + protected Object[] addSetValues() { + return AbstractTestBidiMap.this.getNewSampleValues(); } protected boolean supportsRemove() { @@ -511,41 +513,17 @@ public abstract class AbstractTestBidiMap extends AbstractTestMap { return AbstractTestBidiMap.this.map; } + protected Map getConfirmedMap() { + // assumes makeFullMapIterator() called first + return AbstractTestBidiMap.this.confirmed; + } + protected void verify() { super.verify(); - AbstractTestBidiMap.this.verifyInverse(); + AbstractTestBidiMap.this.verify(); } } - //----------------------------------------------------------------------- - public void testBidiMapIteratorRemove() { - resetFull(); - BidiMap bidi = (BidiMap) map; - MapIterator it = bidi.mapIterator(); - assertEquals(true, it.hasNext()); - Object key = it.next(); - - if (isRemoveSupported() == false) { - try { - it.remove(); - fail(); - } catch (UnsupportedOperationException ex) { - } - return; - } - - it.remove(); - confirmed.remove(key); - assertEquals(false, bidi.containsKey(key)); - verify(); - - try { - it.remove(); // second remove fails - } catch (IllegalStateException ex) { - } - verify(); - } - //----------------------------------------------------------------------- public void testBidiMapIteratorSet() { Object newValue1 = getOtherValues()[0]; diff --git a/src/test/org/apache/commons/collections/TestFlat3Map.java b/src/test/org/apache/commons/collections/TestFlat3Map.java index 36de9139e..d051c4934 100644 --- a/src/test/org/apache/commons/collections/TestFlat3Map.java +++ b/src/test/org/apache/commons/collections/TestFlat3Map.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/Attic/TestFlat3Map.java,v 1.1 2003/11/02 23:41:46 scolebourne Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/Attic/TestFlat3Map.java,v 1.2 2003/11/08 18:46:57 scolebourne Exp $ * ==================================================================== * * The Apache Software License, Version 1.1 @@ -68,7 +68,7 @@ import org.apache.commons.collections.iterators.MapIterator; /** * JUnit tests. * - * @version $Revision: 1.1 $ $Date: 2003/11/02 23:41:46 $ + * @version $Revision: 1.2 $ $Date: 2003/11/08 18:46:57 $ * * @author Stephen Colebourne */ @@ -100,8 +100,8 @@ public class TestFlat3Map extends AbstractTestMap { super("TestFlatMapIterator"); } - protected Object addSetValue() { - return TestFlat3Map.this.getNewSampleValues()[0]; + protected Object[] addSetValues() { + return TestFlat3Map.this.getNewSampleValues(); } protected boolean supportsRemove() { @@ -127,88 +127,14 @@ public class TestFlat3Map extends AbstractTestMap { return TestFlat3Map.this.map; } + protected Map getConfirmedMap() { + // assumes makeFullMapIterator() called first + return TestFlat3Map.this.confirmed; + } + protected void verify() { super.verify(); - // cannot cross verify as we don't know what superclass did + TestFlat3Map.this.verify(); } } - - //----------------------------------------------------------------------- - public void testMapIteratorRemove() { - resetFull(); - Flat3Map testMap = (Flat3Map) map; - MapIterator it = testMap.mapIterator(); - assertEquals(true, it.hasNext()); - Object key = it.next(); - - if (isRemoveSupported() == false) { - try { - it.remove(); - fail(); - } catch (UnsupportedOperationException ex) { - } - return; - } - - it.remove(); - confirmed.remove(key); - assertEquals(false, testMap.containsKey(key)); - verify(); - - try { - it.remove(); // second remove fails - } catch (IllegalStateException ex) { - } - verify(); - } - - //----------------------------------------------------------------------- - public void testMapIteratorSet() { - Object newValue1 = getOtherValues()[0]; - Object newValue2 = getOtherValues()[1]; - - resetFull(); - Flat3Map testMap = (Flat3Map) map; - MapIterator it = testMap.mapIterator(); - assertEquals(true, it.hasNext()); - Object key1 = it.next(); - - if (isSetValueSupported() == false) { - try { - it.setValue(newValue1); - fail(); - } catch (UnsupportedOperationException ex) { - } - return; - } - - it.setValue(newValue1); - confirmed.put(key1, newValue1); - assertSame(key1, it.getKey()); - assertSame(newValue1, it.getValue()); - assertEquals(true, testMap.containsKey(key1)); - assertEquals(true, testMap.containsValue(newValue1)); - assertEquals(newValue1, testMap.get(key1)); - verify(); - - it.setValue(newValue1); // same value - should be OK - confirmed.put(key1, newValue1); - assertSame(key1, it.getKey()); - assertSame(newValue1, it.getValue()); - assertEquals(true, testMap.containsKey(key1)); - assertEquals(true, testMap.containsValue(newValue1)); - assertEquals(newValue1, testMap.get(key1)); - verify(); - - Object key2 = it.next(); - it.setValue(newValue2); - confirmed.put(key2, newValue2); - assertSame(key2, it.getKey()); - assertSame(newValue2, it.getValue()); - assertEquals(true, testMap.containsKey(key2)); - assertEquals(true, testMap.containsValue(newValue2)); - assertEquals(newValue2, testMap.get(key2)); - verify(); - } - } diff --git a/src/test/org/apache/commons/collections/TestIteratorUtils.java b/src/test/org/apache/commons/collections/TestIteratorUtils.java index cdbdb0381..aafc32679 100644 --- a/src/test/org/apache/commons/collections/TestIteratorUtils.java +++ b/src/test/org/apache/commons/collections/TestIteratorUtils.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/TestIteratorUtils.java,v 1.8 2003/11/02 15:27:54 scolebourne Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/TestIteratorUtils.java,v 1.9 2003/11/08 18:47:38 scolebourne Exp $ * ==================================================================== * * The Apache Software License, Version 1.1 @@ -66,13 +66,17 @@ import java.util.NoSuchElementException; import junit.framework.Test; +import org.apache.commons.collections.iterators.MapIterator; +import org.apache.commons.collections.iterators.OrderedMapIterator; import org.apache.commons.collections.iterators.ResetableIterator; import org.apache.commons.collections.iterators.ResetableListIterator; +import org.apache.commons.collections.iterators.ResetableMapIterator; +import org.apache.commons.collections.iterators.ResetableOrderedMapIterator; /** * Tests for IteratorUtils. * - * @version $Revision: 1.8 $ $Date: 2003/11/02 15:27:54 $ + * @version $Revision: 1.9 $ $Date: 2003/11/08 18:47:38 $ * * @author Unknown */ @@ -429,6 +433,8 @@ public class TestIteratorUtils extends BulkTest { * Test empty iterator */ public void testEmptyIterator() { + assertTrue(IteratorUtils.EMPTY_ITERATOR instanceof Iterator); + assertTrue(IteratorUtils.EMPTY_ITERATOR instanceof ResetableIterator); assertEquals(false, IteratorUtils.EMPTY_ITERATOR.hasNext()); IteratorUtils.EMPTY_ITERATOR.reset(); assertSame(IteratorUtils.EMPTY_ITERATOR, IteratorUtils.EMPTY_ITERATOR); @@ -448,6 +454,10 @@ public class TestIteratorUtils extends BulkTest { * Test empty list iterator */ public void testEmptyListIterator() { + assertTrue(IteratorUtils.EMPTY_LIST_ITERATOR instanceof Iterator); + assertTrue(IteratorUtils.EMPTY_LIST_ITERATOR instanceof ListIterator); + assertTrue(IteratorUtils.EMPTY_LIST_ITERATOR instanceof ResetableIterator); + assertTrue(IteratorUtils.EMPTY_LIST_ITERATOR instanceof ResetableListIterator); assertEquals(false, IteratorUtils.EMPTY_LIST_ITERATOR.hasNext()); assertEquals(0, IteratorUtils.EMPTY_LIST_ITERATOR.nextIndex()); assertEquals(-1, IteratorUtils.EMPTY_LIST_ITERATOR.previousIndex()); @@ -481,6 +491,10 @@ public class TestIteratorUtils extends BulkTest { * Test empty map iterator */ public void testEmptyMapIterator() { + assertTrue(IteratorUtils.EMPTY_MAP_ITERATOR instanceof Iterator); + assertTrue(IteratorUtils.EMPTY_MAP_ITERATOR instanceof MapIterator); + assertTrue(IteratorUtils.EMPTY_MAP_ITERATOR instanceof ResetableIterator); + assertTrue(IteratorUtils.EMPTY_MAP_ITERATOR instanceof ResetableMapIterator); assertEquals(false, IteratorUtils.EMPTY_MAP_ITERATOR.hasNext()); IteratorUtils.EMPTY_MAP_ITERATOR.reset(); assertSame(IteratorUtils.EMPTY_MAP_ITERATOR, IteratorUtils.EMPTY_MAP_ITERATOR); @@ -505,8 +519,46 @@ public class TestIteratorUtils extends BulkTest { IteratorUtils.EMPTY_MAP_ITERATOR.setValue(null); fail(); } catch (IllegalStateException ex) {} + } + + //----------------------------------------------------------------------- + /** + * Test empty map iterator + */ + public void testEmptyOrderedMapIterator() { + assertTrue(IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR instanceof Iterator); + assertTrue(IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR instanceof MapIterator); + assertTrue(IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR instanceof OrderedMapIterator); + assertTrue(IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR instanceof ResetableIterator); + assertTrue(IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR instanceof ResetableMapIterator); + assertTrue(IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR instanceof ResetableOrderedMapIterator); + assertEquals(false, IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR.hasNext()); + assertEquals(false, IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR.hasPrevious()); + IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR.reset(); + assertSame(IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR, IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR); + assertSame(IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR, IteratorUtils.emptyOrderedMapIterator()); try { - IteratorUtils.EMPTY_MAP_ITERATOR.asMapEntry(); + IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR.next(); + fail(); + } catch (NoSuchElementException ex) {} + try { + IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR.previous(); + fail(); + } catch (NoSuchElementException ex) {} + try { + IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR.remove(); + fail(); + } catch (IllegalStateException ex) {} + try { + IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR.getKey(); + fail(); + } catch (IllegalStateException ex) {} + try { + IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR.getValue(); + fail(); + } catch (IllegalStateException ex) {} + try { + IteratorUtils.EMPTY_ORDERED_MAP_ITERATOR.setValue(null); fail(); } catch (IllegalStateException ex) {} } diff --git a/src/test/org/apache/commons/collections/decorators/TestOrderedMap.java b/src/test/org/apache/commons/collections/decorators/TestOrderedMap.java index a2180e834..5e46990a9 100644 --- a/src/test/org/apache/commons/collections/decorators/TestOrderedMap.java +++ b/src/test/org/apache/commons/collections/decorators/TestOrderedMap.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/decorators/Attic/TestOrderedMap.java,v 1.3 2003/11/04 23:36:23 scolebourne Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/decorators/Attic/TestOrderedMap.java,v 1.4 2003/11/08 18:46:57 scolebourne Exp $ * ==================================================================== * * The Apache Software License, Version 1.1 @@ -76,7 +76,7 @@ import org.apache.commons.collections.iterators.MapIterator; * implementation. * * @since Commons Collections 3.0 - * @version $Revision: 1.3 $ $Date: 2003/11/04 23:36:23 $ + * @version $Revision: 1.4 $ $Date: 2003/11/08 18:46:57 $ * * @author Henri Yandell * @author Stephen Colebourne @@ -136,6 +136,16 @@ public class TestOrderedMap extends AbstractTestMap { // assumes makeFullMapIterator() called first return TestOrderedMap.this.map; } + + protected Map getConfirmedMap() { + // assumes makeFullMapIterator() called first + return TestOrderedMap.this.confirmed; + } + + protected void verify() { + super.verify(); + TestOrderedMap.this.verify(); + } } //----------------------------------------------------------------------- diff --git a/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java b/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java index b421ddfe7..e6aaeeb9a 100644 --- a/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java +++ b/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java,v 1.3 2003/11/02 19:47:10 scolebourne Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java,v 1.4 2003/11/08 18:46:57 scolebourne Exp $ * ==================================================================== * * The Apache Software License, Version 1.1 @@ -71,7 +71,7 @@ import org.apache.commons.collections.AbstractTestObject; * overriding the supportsXxx() methods if necessary. * * @since Commons Collections 3.0 - * @version $Revision: 1.3 $ $Date: 2003/11/02 19:47:10 $ + * @version $Revision: 1.4 $ $Date: 2003/11/08 18:46:57 $ * * @author Morgan Delagrange * @author Stephen Colebourne @@ -229,14 +229,12 @@ public abstract class AbstractTestIterator extends AbstractTestObject { // remove after next should be fine it.next(); it.remove(); - verify(); // should throw IllegalStateException for second remove() try { it.remove(); fail(); } catch (IllegalStateException ex) {} - verify(); } } diff --git a/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java b/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java index 2044e3a23..9632e80d6 100644 --- a/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java +++ b/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java,v 1.2 2003/11/02 19:47:10 scolebourne Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java,v 1.3 2003/11/08 18:46:57 scolebourne Exp $ * ==================================================================== * * The Apache Software License, Version 1.1 @@ -62,7 +62,6 @@ import java.util.Iterator; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; -import java.util.Map.Entry; /** * Abstract class for testing the MapIterator interface. @@ -73,7 +72,7 @@ import java.util.Map.Entry; * overriding the supportsXxx() methods if necessary. * * @since Commons Collections 3.0 - * @version $Revision: 1.2 $ $Date: 2003/11/02 19:47:10 $ + * @version $Revision: 1.3 $ $Date: 2003/11/08 18:46:57 $ * * @author Stephen Colebourne */ @@ -112,14 +111,13 @@ public abstract class AbstractTestMapIterator extends AbstractTestIterator { protected abstract Map getMap(); /** - * Override if the map returned by getMap() is NOT the one tied to the iterator. + * Implement this method to return the confirmed map which contains the same + * data as the iterator. * - * @return true if the getMap() map is the one tied to the iterator + * @return a full map which can be updated */ - protected boolean supportsTiedMap() { - return true; - } - + protected abstract Map getConfirmedMap(); + /** * Implements the abstract superclass method to return the list iterator. * @@ -149,11 +147,11 @@ public abstract class AbstractTestMapIterator extends AbstractTestIterator { } /** - * The value to be used in the add and set tests. - * Default is null. + * The values to be used in the add and set tests. + * Default is two strings. */ - protected Object addSetValue() { - return null; + protected Object[] addSetValues() { + return new Object[] {"A", "B"}; } //----------------------------------------------------------------------- @@ -187,23 +185,17 @@ public abstract class AbstractTestMapIterator extends AbstractTestIterator { fail(); } catch (IllegalStateException ex) {} - // asMapEntry() should throw an IllegalStateException - try { - it.asMapEntry(); - fail(); - } catch (IllegalStateException ex) {} - if (supportsSetValue() == false) { // setValue() should throw an UnsupportedOperationException/IllegalStateException try { - it.setValue(addSetValue()); + it.setValue(addSetValues()[0]); fail(); } catch (UnsupportedOperationException ex) { } catch (IllegalStateException ex) {} } else { // setValue() should throw an IllegalStateException try { - it.setValue(addSetValue()); + it.setValue(addSetValues()[0]); fail(); } catch (IllegalStateException ex) {} } @@ -223,9 +215,6 @@ public abstract class AbstractTestMapIterator extends AbstractTestIterator { assertEquals(true, it.hasNext()); assertEquals(true, it.hasNext()); - Map.Entry lastEntry = null; - Object lastKey = null; - Object lastValue = null; Set set = new HashSet(); while (it.hasNext()) { // getKey @@ -239,21 +228,7 @@ public abstract class AbstractTestMapIterator extends AbstractTestIterator { assertSame("Value must be mapped to key", map.get(key), value); assertTrue("Value must be in map", map.containsValue(value)); assertSame("Value must be mapped to key", map.get(key), value); - - // asMapEntry - Map.Entry entry = it.asMapEntry(); - assertSame("MapEntry key must match", key, entry.getKey()); - assertSame("MapEntry value must match", value, entry.getValue()); - - assertTrue("MapEntry must be independent", entry != lastEntry); - if (lastKey != null && lastValue != null) { - assertSame("MapEntry must not change after next()", lastKey, lastEntry.getKey()); - assertSame("MapEntry must not change after next()", lastValue, lastEntry.getValue()); - } - - lastEntry = entry; - lastKey = key; - lastValue = value; + verify(); } } @@ -264,13 +239,14 @@ public abstract class AbstractTestMapIterator extends AbstractTestIterator { return; } - Object newValue = addSetValue(); + Object newValue = addSetValues()[0]; + Object newValue2 = addSetValues()[1]; MapIterator it = makeFullMapIterator(); Map map = getMap(); + Map confirmed = getConfirmedMap(); assertEquals(true, it.hasNext()); Object key = it.next(); Object value = it.getValue(); - Entry entry = it.asMapEntry(); if (supportsSetValue() == false) { try { @@ -281,97 +257,70 @@ public abstract class AbstractTestMapIterator extends AbstractTestIterator { } Object old = it.setValue(newValue); + confirmed.put(key, newValue); assertSame("Key must not change after setValue", key, it.getKey()); - assertSame("Key must not change after setValue", key, entry.getKey()); assertSame("Value must be changed after setValue", newValue, it.getValue()); - assertSame("Value must be changed after setValue", newValue, entry.getValue()); assertSame("setValue must return old value", value, old); - if (supportsTiedMap()) { - assertTrue("Key must be in map", map.containsKey(key)); - assertTrue("Old value must not be in map", map.containsValue(value) == false); - assertTrue("Value must be in map", map.containsValue(newValue)); - assertSame("Value must be mapped to key", map.get(key), newValue); - } verify(); it.setValue(newValue); // same value - should be OK + confirmed.put(key, newValue); assertSame("Key must not change after setValue", key, it.getKey()); - assertSame("Key must not change after setValue", key, entry.getKey()); assertSame("Value must be changed after setValue", newValue, it.getValue()); - assertSame("Value must be changed after setValue", newValue, entry.getValue()); - if (supportsTiedMap()) { - assertTrue("Key must be in map", map.containsKey(key)); - assertTrue("Old value must not be in map", map.containsValue(value) == false); - assertTrue("Value must be in map", map.containsValue(newValue)); - assertSame("Value must be mapped to key", map.get(key), newValue); - } + verify(); + + it.setValue(newValue2); // new value + confirmed.put(key, newValue2); + assertSame("Key must not change after setValue", key, it.getKey()); + assertSame("Value must be changed after setValue", newValue2, it.getValue()); verify(); } //----------------------------------------------------------------------- - public void testMapIteratorMapEntrySet() { - if (supportsFullIterator() == false) { - return; - } - - Object newValue = addSetValue(); + public void testRemove() { // override MapIterator it = makeFullMapIterator(); Map map = getMap(); + Map confirmed = getConfirmedMap(); assertEquals(true, it.hasNext()); Object key = it.next(); - Object value = it.getValue(); - Entry entry = it.asMapEntry(); - if (supportsSetValue() == false) { + if (supportsRemove() == false) { try { - entry.setValue(newValue); + it.remove(); fail(); - } catch (UnsupportedOperationException ex) {} + } catch (UnsupportedOperationException ex) { + } return; } - Object old = entry.setValue(newValue); - assertSame("Key must not change after setValue", key, it.getKey()); - assertSame("Key must not change after setValue", key, entry.getKey()); - assertSame("Value must be changed after setValue", newValue, it.getValue()); - assertSame("Value must be changed after setValue", newValue, entry.getValue()); - assertSame("setValue must return old value", value, old); - if (supportsTiedMap()) { - assertTrue("Key must be in map", map.containsKey(key)); - assertTrue("Old value must not be in map", map.containsValue(value) == false); - assertTrue("Value must be in map", map.containsValue(newValue)); - assertSame("Value must be mapped to key", map.get(key), newValue); - } + it.remove(); + confirmed.remove(key); + assertEquals(false, map.containsKey(key)); verify(); - entry.setValue(newValue); // same value - should be OK - assertSame("Key must not change after setValue", key, it.getKey()); - assertSame("Key must not change after setValue", key, entry.getKey()); - assertSame("Value must be changed after setValue", newValue, it.getValue()); - assertSame("Value must be changed after setValue", newValue, entry.getValue()); - if (supportsTiedMap()) { - assertTrue("Key must be in map", map.containsKey(key)); - assertTrue("Old value must not be in map", map.containsValue(value) == false); - assertTrue("Value must be in map", map.containsValue(newValue)); - assertSame("Value must be mapped to key", map.get(key), newValue); + try { + it.remove(); // second remove fails + } catch (IllegalStateException ex) { } verify(); } //----------------------------------------------------------------------- - public void testBidiMapIteratorSetRemoveSet() { + public void testMapIteratorSetRemoveSet() { if (supportsSetValue() == false || supportsRemove() == false) { return; } - Object newValue = addSetValue(); - + Object newValue = addSetValues()[0]; MapIterator it = makeFullMapIterator(); Map map = getMap(); + Map confirmed = getConfirmedMap(); + assertEquals(true, it.hasNext()); Object key = it.next(); it.setValue(newValue); it.remove(); + confirmed.remove(key); verify(); try { diff --git a/src/test/org/apache/commons/collections/iterators/TestUnmodifiableMapIterator.java b/src/test/org/apache/commons/collections/iterators/TestUnmodifiableMapIterator.java index 01d0fbd4b..041317d75 100644 --- a/src/test/org/apache/commons/collections/iterators/TestUnmodifiableMapIterator.java +++ b/src/test/org/apache/commons/collections/iterators/TestUnmodifiableMapIterator.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/iterators/TestUnmodifiableMapIterator.java,v 1.1 2003/11/02 18:29:59 scolebourne Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/iterators/TestUnmodifiableMapIterator.java,v 1.2 2003/11/08 18:46:57 scolebourne Exp $ * ==================================================================== * * The Apache Software License, Version 1.1 @@ -57,6 +57,7 @@ */ package org.apache.commons.collections.iterators; +import java.util.HashMap; import java.util.Map; import junit.framework.Test; @@ -69,7 +70,7 @@ import org.apache.commons.collections.Unmodifiable; /** * Tests the UnmodifiableMapIterator. * - * @version $Revision: 1.1 $ $Date: 2003/11/02 18:29:59 $ + * @version $Revision: 1.2 $ $Date: 2003/11/08 18:46:57 $ * * @author Stephen Colebourne */ @@ -99,6 +100,13 @@ public class TestUnmodifiableMapIterator extends AbstractTestMapIterator { return testMap; } + protected Map getConfirmedMap() { + Map testMap = new HashMap(); + testMap.put("A", "a"); + testMap.put("B", "b"); + testMap.put("C", "c"); + return testMap; + } public boolean supportsRemove() { return false;