You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2003/11/20 01:31:42 UTC
cvs commit: jakarta-commons/collections/src/test/org/apache/commons/collections/bidimap AbstractTestOrderedBidiMap.java
scolebourne 2003/11/19 16:31:42
Modified: collections/src/java/org/apache/commons/collections/bidimap
TreeBidiMap.java DualTreeBidiMap.java
collections/src/test/org/apache/commons/collections/iterators
AbstractTestMapIterator.java
collections/src/test/org/apache/commons/collections/bidimap
AbstractTestOrderedBidiMap.java
Log:
Better testing of MapIterators
Revision Changes Path
1.2 +8 -2 jakarta-commons/collections/src/java/org/apache/commons/collections/bidimap/TreeBidiMap.java
Index: TreeBidiMap.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/bidimap/TreeBidiMap.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TreeBidiMap.java 16 Nov 2003 20:35:46 -0000 1.1
+++ TreeBidiMap.java 20 Nov 2003 00:31:42 -0000 1.2
@@ -1644,10 +1644,16 @@
}
public Object getKey() {
+ if (lastReturnedNode == null) {
+ throw new IllegalStateException("Iterator getKey() can only be called after next() and before remove()");
+ }
return lastReturnedNode.getData(dataType);
}
public Object getValue() {
+ if (lastReturnedNode == null) {
+ throw new IllegalStateException("Iterator getValue() can only be called after next() and before remove()");
+ }
return lastReturnedNode.getData(oppositeType);
}
1.3 +6 -5 jakarta-commons/collections/src/java/org/apache/commons/collections/bidimap/DualTreeBidiMap.java
Index: DualTreeBidiMap.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/bidimap/DualTreeBidiMap.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DualTreeBidiMap.java 19 Nov 2003 23:58:11 -0000 1.2
+++ DualTreeBidiMap.java 20 Nov 2003 00:31:42 -0000 1.3
@@ -61,6 +61,7 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.ListIterator;
@@ -68,7 +69,6 @@
import java.util.SortedMap;
import java.util.TreeMap;
-import org.apache.commons.collections.iterators.ListIteratorWrapper;
import org.apache.commons.collections.iterators.OrderedMapIterator;
import org.apache.commons.collections.iterators.ResettableIterator;
import org.apache.commons.collections.map.AbstractSortedMapDecorator;
@@ -290,7 +290,7 @@
protected BidiOrderedMapIterator(AbstractDualBidiMap map) {
super();
this.map = map;
- iterator = new ListIteratorWrapper(map.entrySet().iterator());
+ iterator = new ArrayList(map.entrySet()).listIterator();
}
public boolean hasNext() {
@@ -314,6 +314,7 @@
public void remove() {
iterator.remove();
map.remove(last.getKey());
+ last = null;
}
public Object getKey() {
@@ -342,7 +343,7 @@
}
public void reset() {
- iterator = new ListIteratorWrapper(map.entrySet().iterator());
+ iterator = new ArrayList(map.entrySet()).listIterator();
last = null;
}
1.6 +48 -2 jakarta-commons/collections/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java
Index: AbstractTestMapIterator.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AbstractTestMapIterator.java 20 Nov 2003 00:03:05 -0000 1.5
+++ AbstractTestMapIterator.java 20 Nov 2003 00:31:42 -0000 1.6
@@ -333,4 +333,50 @@
verify();
}
+ //-----------------------------------------------------------------------
+ public void testMapIteratorRemoveGetKey() {
+ if (supportsRemove() == false) {
+ return;
+ }
+ MapIterator it = makeFullMapIterator();
+ Map map = getMap();
+ Map confirmed = getConfirmedMap();
+
+ assertEquals(true, it.hasNext());
+ Object key = it.next();
+
+ it.remove();
+ confirmed.remove(key);
+ verify();
+
+ try {
+ it.getKey();
+ fail();
+ } catch (IllegalStateException ex) {}
+ verify();
+ }
+
+ //-----------------------------------------------------------------------
+ public void testMapIteratorRemoveGetValue() {
+ if (supportsRemove() == false) {
+ return;
+ }
+ MapIterator it = makeFullMapIterator();
+ Map map = getMap();
+ Map confirmed = getConfirmedMap();
+
+ assertEquals(true, it.hasNext());
+ Object key = it.next();
+
+ it.remove();
+ confirmed.remove(key);
+ verify();
+
+ try {
+ it.getValue();
+ fail();
+ } catch (IllegalStateException ex) {}
+ verify();
+ }
+
}
1.2 +49 -30 jakarta-commons/collections/src/test/org/apache/commons/collections/bidimap/AbstractTestOrderedBidiMap.java
Index: AbstractTestOrderedBidiMap.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/bidimap/AbstractTestOrderedBidiMap.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractTestOrderedBidiMap.java 16 Nov 2003 20:35:46 -0000 1.1
+++ AbstractTestOrderedBidiMap.java 20 Nov 2003 00:31:42 -0000 1.2
@@ -61,10 +61,12 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.NoSuchElementException;
+import org.apache.commons.collections.BulkTest;
+import org.apache.commons.collections.iterators.AbstractTestMapIterator;
import org.apache.commons.collections.iterators.MapIterator;
-import org.apache.commons.collections.iterators.OrderedMapIterator;
/**
* Abstract test class for {@link OrderedBidiMap} methods and contracts.
@@ -186,33 +188,50 @@
}
//-----------------------------------------------------------------------
- public void testMapIteratorOrder() {
- resetFull();
- OrderedBidiMap bidi = (OrderedBidiMap) map;
- List ordered = new ArrayList(map.keySet());
- List ordered2 = new ArrayList(map.keySet());
- assertEquals("KeySet iterator is not consistent", ordered, ordered2);
-
- int i = 0;
- for (MapIterator it = bidi.mapIterator(); it.hasNext(); i++) {
- Object key = (Object) it.next();
- assertEquals("Inconsistent order", ordered.get(i), key);
- assertEquals("Incorrect value for key", bidi.get(key), it.getValue());
- }
- i = 0;
- OrderedMapIterator it = bidi.orderedMapIterator();
- for (; it.hasNext(); i++) {
- Object key = (Object) it.next();
- assertEquals("Inconsistent order", ordered.get(i), key);
- assertEquals("Incorrect value for key", bidi.get(key), it.getValue());
- assertEquals(true, it.hasPrevious());
- }
- i--;
- for (; it.hasPrevious(); i--) {
- Object key = (Object) it.previous();
- assertEquals("Inconsistent order", ordered.get(i), key);
- assertEquals("Incorrect value for key", bidi.get(key), it.getValue());
- assertEquals(true, it.hasNext());
+ public BulkTest bulkTestOrderedMapIterator() {
+ return new TestBidiOrderedMapIterator();
+ }
+
+ public class TestBidiOrderedMapIterator extends AbstractTestMapIterator {
+ public TestBidiOrderedMapIterator() {
+ super("TestBidiOrderedMapIterator");
+ }
+
+ public Object[] addSetValues() {
+ return AbstractTestOrderedBidiMap.this.getNewSampleValues();
+ }
+
+ public boolean supportsRemove() {
+ return AbstractTestOrderedBidiMap.this.isRemoveSupported();
+ }
+
+ public boolean supportsSetValue() {
+ return AbstractTestOrderedBidiMap.this.isSetValueSupported();
+ }
+
+ public MapIterator makeEmptyMapIterator() {
+ resetEmpty();
+ return ((OrderedBidiMap) AbstractTestOrderedBidiMap.this.map).orderedMapIterator();
+ }
+
+ public MapIterator makeFullMapIterator() {
+ resetFull();
+ return ((OrderedBidiMap) AbstractTestOrderedBidiMap.this.map).orderedMapIterator();
+ }
+
+ public Map getMap() {
+ // assumes makeFullMapIterator() called first
+ return AbstractTestOrderedBidiMap.this.map;
+ }
+
+ public Map getConfirmedMap() {
+ // assumes makeFullMapIterator() called first
+ return AbstractTestOrderedBidiMap.this.confirmed;
+ }
+
+ public void verify() {
+ super.verify();
+ AbstractTestOrderedBidiMap.this.verify();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org