Merging from -r468106:814127 of collections_jdk5_branch - namely where this code was generified; mostly in r738956.

Also see the following revisions:

    ------------------------------------------------------------------------
    r641231 | skestle | 2008-03-26 02:58:51 -0700 (Wed, 26 Mar 2008) | 1 line
    
    Started incorporating Edwin's patch for COLLECTIONS-253, in preparation for COLLECTIONS-290.
    ------------------------------------------------------------------------


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/trunk@815115 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Henri Yandell 2009-09-15 05:57:07 +00:00
parent 284c7bd060
commit 2365356393

View File

@ -16,6 +16,8 @@
*/
package org.apache.commons.collections.iterators;
import static org.apache.commons.collections.functors.TruePredicate.truePredicate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@ -28,7 +30,6 @@ import junit.framework.TestSuite;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.functors.NotNullPredicate;
import org.apache.commons.collections.functors.TruePredicate;
/**
* Test the filter iterator.
@ -39,7 +40,7 @@ import org.apache.commons.collections.functors.TruePredicate;
* @author Ralph Wagner
* @author Huw Roberts
*/
public class TestFilterIterator extends AbstractTestIterator {
public class TestFilterIterator<E> extends AbstractTestIterator<E> {
/** Creates new TestFilterIterator */
public TestFilterIterator(String name) {
@ -47,8 +48,9 @@ public class TestFilterIterator extends AbstractTestIterator {
}
private String[] array;
private List list;
private FilterIterator iterator;
private List<E> list;
private FilterIterator<E> iterator;
/**
* Set up instance variables required by this test case.
*/
@ -74,11 +76,11 @@ public class TestFilterIterator extends AbstractTestIterator {
/**
* Returns an full iterator wrapped in a
* FilterIterator that blocks all the elements
*
*
* @return "empty" FilterIterator
*/
public Iterator makeEmptyIterator() {
return makeBlockAllFilter(new ArrayIterator(array));
public FilterIterator<E> makeEmptyIterator() {
return makeBlockAllFilter(new ArrayIterator<E>(array));
}
/**
@ -87,9 +89,9 @@ public class TestFilterIterator extends AbstractTestIterator {
*
* @return a filtered iterator
*/
public Iterator makeFullIterator() {
array = new String[] { "a", "b", "c" };
list = new ArrayList(Arrays.asList(array));
@SuppressWarnings("unchecked")
public FilterIterator<E> makeObject() {
list = new ArrayList<E>(Arrays.asList((E[]) array));
return makePassThroughFilter(list.iterator());
}
@ -100,8 +102,9 @@ public class TestFilterIterator extends AbstractTestIterator {
}
public void testRepeatedNext() {
for (int i = 0; i < array.length; i++)
for (int i = 0; i < array.length; i++) {
iterator.next();
}
verifyNoMoreElements();
}
@ -120,15 +123,16 @@ public class TestFilterIterator extends AbstractTestIterator {
* Test that when the iterator is changed, the hasNext method returns the
* correct response for the new iterator.
*/
@SuppressWarnings("unchecked")
public void testSetIterator() {
Iterator iter1 = Collections.singleton(new Object()).iterator();
Iterator iter2 = Collections.EMPTY_LIST.iterator();
FilterIterator filterIterator = new FilterIterator(iter1);
filterIterator.setPredicate(TruePredicate.getInstance());
Iterator<E> iter1 = Collections.singleton((E) new Object()).iterator();
Iterator<E> iter2 = Collections.<E>emptyList().iterator();
FilterIterator<E> filterIterator = new FilterIterator<E>(iter1);
filterIterator.setPredicate(truePredicate());
// this iterator has elements
assertEquals(true, filterIterator.hasNext());
// this iterator has no elements
filterIterator.setIterator(iter2);
assertEquals(false, filterIterator.hasNext());
@ -139,13 +143,13 @@ public class TestFilterIterator extends AbstractTestIterator {
* correct response for the new predicate.
*/
public void testSetPredicate() {
Iterator iter = Collections.singleton(null).iterator();
Iterator<E> iter = Collections.singleton((E) null).iterator();
FilterIterator filterIterator = new FilterIterator(iter);
filterIterator.setPredicate(TruePredicate.getInstance());
FilterIterator<E> filterIterator = new FilterIterator<E>(iter);
filterIterator.setPredicate(truePredicate());
// this predicate matches
assertEquals(true, filterIterator.hasNext());
// this predicate doesn't match
filterIterator.setPredicate(NotNullPredicate.getInstance());
assertEquals(false, filterIterator.hasNext());
@ -163,11 +167,13 @@ public class TestFilterIterator extends AbstractTestIterator {
}
private void verifyElementsInPredicate(final String[] elements) {
Predicate pred = new Predicate() {
public boolean evaluate(Object x) {
for (int i = 0; i < elements.length; i++)
if (elements[i].equals(x))
Predicate<E> pred = new Predicate<E>() {
public boolean evaluate(E x) {
for (int i = 0; i < elements.length; i++) {
if (elements[i].equals(x)) {
return true;
}
}
return false;
}
};
@ -191,35 +197,35 @@ public class TestFilterIterator extends AbstractTestIterator {
}
private void initIterator() {
iterator = (FilterIterator) makeFullIterator();
iterator = makeObject();
}
/**
* Returns a FilterIterator that does not filter
* any of its elements
*
*
* @param i the Iterator to "filter"
* @return "filtered" iterator
*/
protected FilterIterator makePassThroughFilter(Iterator i) {
Predicate pred = new Predicate() {
public boolean evaluate(Object x) { return true; }
protected FilterIterator<E> makePassThroughFilter(Iterator<E> i) {
Predicate<E> pred = new Predicate<E>() {
public boolean evaluate(E x) { return true; }
};
return new FilterIterator(i,pred);
return new FilterIterator<E>(i, pred);
}
/**
* Returns a FilterIterator that blocks
* all of its elements
*
*
* @param i the Iterator to "filter"
* @return "filtered" iterator
*/
protected FilterIterator makeBlockAllFilter(Iterator i) {
Predicate pred = new Predicate() {
public boolean evaluate(Object x) { return false; }
protected FilterIterator<E> makeBlockAllFilter(Iterator<E> i) {
Predicate<E> pred = new Predicate<E>() {
public boolean evaluate(E x) { return false; }
};
return new FilterIterator(i,pred);
return new FilterIterator<E>(i, pred);
}
}