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