org.apache.commons.collections.list
Class AbstractTestList

java.lang.Object
  extended by junit.framework.Assert
      extended by junit.framework.TestCase
          extended by org.apache.commons.collections.BulkTest
              extended by org.apache.commons.collections.AbstractTestObject
                  extended by org.apache.commons.collections.collection.AbstractTestCollection
                      extended by org.apache.commons.collections.list.AbstractTestList
All Implemented Interfaces:
java.lang.Cloneable, junit.framework.Test
Direct Known Subclasses:
AbstractTestList.BulkTestSubList

public abstract class AbstractTestList
extends AbstractTestCollection

Abstract test class for List methods and contracts.

To use, simply extend this class, and implement the makeEmptyList() method.

If your AbstractTestList.BulkTestSubList fails one of these tests by design, you may still use this base set of cases. Simply override the test case (method) your AbstractTestList.BulkTestSubList fails or override one of the protected methods from AbstractTestCollection.


Nested Class Summary
static class AbstractTestList.BulkTestSubList
           
 class AbstractTestList.TestListIterator
           
 
Field Summary
 
Fields inherited from class org.apache.commons.collections.collection.AbstractTestCollection
collection, confirmed
 
Fields inherited from class org.apache.commons.collections.AbstractTestObject
COLLECTIONS_MAJOR_VERSION
 
Constructor Summary
AbstractTestList(java.lang.String testName)
          JUnit constructor.
 
Method Summary
 BulkTest bulkTestListIterator()
           
 BulkTest bulkTestSubList()
          Returns a BulkTest for testing List#subList(int,int).
protected  void failFastAll(java.util.List list)
          Invokes all the methods on the given sublist to make sure they raise a ConcurrentModificationException.
protected  void failFastMethod(java.util.List list, java.lang.reflect.Method m)
          Invokes the given method on the given sublist to make sure it raises a ConcurrentModificationException.
 java.util.List getConfirmedList()
          Returns the AbstractTestCollection.confirmed field cast to a AbstractTestList.BulkTestSubList.
 java.util.List getList()
          Returns the AbstractTestCollection.collection field cast to a AbstractTestList.BulkTestSubList.
 boolean isEqualsCheckable()
          List equals method is defined.
 boolean isSetSupported()
          Returns true if the collections produced by makeCollection() and makeFullCollection() support the set operation.
 java.util.Collection makeCollection()
          Returns makeEmptyList().
 java.util.Collection makeConfirmedCollection()
          Returns an empty ArrayList.
 java.util.Collection makeConfirmedFullCollection()
          Returns a full ArrayList.
abstract  java.util.List makeEmptyList()
          Return a new, empty AbstractTestList.BulkTestSubList to be used for testing.
 java.util.Collection makeFullCollection()
          Returns makeFullList().
 java.util.List makeFullList()
          Return a new, full AbstractTestList.BulkTestSubList to be used for testing.
 void testEmptyListCompatibility()
          Compare the current serialized form of the List against the canonical version in CVS.
 void testEmptyListSerialization()
           
 void testFullListCompatibility()
          Compare the current serialized form of the List against the canonical version in CVS.
 void testFullListSerialization()
           
 void testListAddByIndex()
          Tests List#add(int,Object).
 void testListAddByIndexBoundsChecking()
          Tests bounds checking for List#add(int, Object) on an empty list.
 void testListAddByIndexBoundsChecking2()
          Tests bounds checking for List#add(int, Object) on a full list.
 void testListEquals()
          Tests Object.equals(Object).
 void testListGetByIndex()
          Tests List#get(int).
 void testListGetByIndexBoundsChecking()
          Tests bounds checking for List#get(int) on an empty list.
 void testListGetByIndexBoundsChecking2()
          Tests bounds checking for List#get(int) on a full list.
 void testListHashCode()
          Tests Object.hashCode().
 void testListIndexOf()
          Tests List#indexOf.
 void testListIteratorAdd()
          Tests the ListIterator.add(Object) method of the list iterator.
 void testListIteratorSet()
          Tests the ListIterator.set(Object) method of the list iterator.
 void testListLastIndexOf()
          Tests List#lastIndexOf.
 void testListListIterator()
          Tests the read-only bits of List#listIterator().
 void testListListIteratorByIndex()
          Tests the read-only bits of List#listIterator(int).
 void testListListIteratorNextRemoveNext()
          Tests remove on list iterator is correct.
 void testListListIteratorNextRemovePrevious()
          Tests remove on list iterator is correct.
 void testListListIteratorPreviousRemoveNext()
          Tests remove on list iterator is correct.
 void testListListIteratorPreviousRemovePrevious()
          Tests remove on list iterator is correct.
 void testListRemoveByIndex()
          Tests List#remove(int).
 void testListRemoveByIndexBoundsChecking()
          Tests bounds checking for List#remove(int) on an empty list.
 void testListRemoveByIndexBoundsChecking2()
          Tests bounds checking for List#remove(int) on a full list.
 void testListSetByIndex()
          Test List#set(int,Object).
 void testListSetByIndexBoundsChecking()
          Tests bounds checking for List#set(int,Object) on an empty list.
 void testListSetByIndexBoundsChecking2()
          Tests bounds checking for List#set(int,Object) on a full list.
 void testListSubListFailFastOnAdd()
          Tests that a sublist raises a ConcurrentModificationException if elements are added to the original list.
 void testListSubListFailFastOnRemove()
          Tests that a sublist raises a ConcurrentModificationException if elements are removed from the original list.
 void testUnsupportedSet()
          If isSetSupported() returns false, tests that set operation raises UnsupportedOperationException.
 void verify()
          Verifies that the test list implementation matches the confirmed list implementation.
 
Methods inherited from class org.apache.commons.collections.collection.AbstractTestCollection
areEqualElementsDistinguishable, cloneMapEntry, getFullElements, getFullNonNullElements, getFullNonNullStringElements, getOtherElements, getOtherNonNullElements, getOtherNonNullStringElements, isAddSupported, isFailFastSupported, isNullSupported, isRemoveSupported, makeObject, resetEmpty, resetFull, testCollectionAdd, testCollectionAddAll, testCollectionClear, testCollectionContains, testCollectionContainsAll, testCollectionIsEmpty, testCollectionIterator, testCollectionIteratorFailFast, testCollectionIteratorRemove, testCollectionRemove, testCollectionRemoveAll, testCollectionRetainAll, testCollectionSize, testCollectionToArray, testCollectionToArray2, testCollectionToString, testSerializeDeserializeThenCompare, testUnsupportedAdd, testUnsupportedRemove
 
Methods inherited from class org.apache.commons.collections.AbstractTestObject
getCanonicalEmptyCollectionName, getCanonicalFullCollectionName, getCompatibilityVersion, isTestSerialization, readExternalFormFromBytes, readExternalFormFromDisk, skipSerializedCanonicalTests, supportsEmptyCollections, supportsFullCollections, testCanonicalEmptyCollectionExists, testCanonicalFullCollectionExists, testEqualsNull, testObjectEqualsSelf, testObjectHashCodeEqualsContract, testObjectHashCodeEqualsSelfHashCode, testSimpleSerialization, writeExternalFormToBytes, writeExternalFormToDisk
 
Methods inherited from class org.apache.commons.collections.BulkTest
clone, ignoredTests, makeSuite, toString
 
Methods inherited from class junit.framework.TestCase
countTestCases, createResult, getName, run, run, runBare, runTest, setName, setUp, tearDown
 
Methods inherited from class junit.framework.Assert
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, fail, fail, failNotEquals, failNotSame, failSame
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractTestList

public AbstractTestList(java.lang.String testName)
JUnit constructor.

Parameters:
testName - the test class name
Method Detail

isSetSupported

public boolean isSetSupported()
Returns true if the collections produced by makeCollection() and makeFullCollection() support the set operation.

Default implementation returns true. Override if your collection class does not support set.


verify

public void verify()
Verifies that the test list implementation matches the confirmed list implementation.

Overrides:
verify in class AbstractTestCollection

isEqualsCheckable

public boolean isEqualsCheckable()
List equals method is defined.

Overrides:
isEqualsCheckable in class AbstractTestCollection

makeConfirmedCollection

public java.util.Collection makeConfirmedCollection()
Returns an empty ArrayList.

Specified by:
makeConfirmedCollection in class AbstractTestCollection
Returns:
a confirmed empty collection

makeConfirmedFullCollection

public java.util.Collection makeConfirmedFullCollection()
Returns a full ArrayList.

Specified by:
makeConfirmedFullCollection in class AbstractTestCollection
Returns:
a confirmed full collection

makeEmptyList

public abstract java.util.List makeEmptyList()
Return a new, empty AbstractTestList.BulkTestSubList to be used for testing.

Returns:
an empty list for testing.

makeFullList

public java.util.List makeFullList()
Return a new, full AbstractTestList.BulkTestSubList to be used for testing.

Returns:
a full list for testing

makeCollection

public final java.util.Collection makeCollection()
Returns makeEmptyList().

Specified by:
makeCollection in class AbstractTestCollection
Returns:
an empty list to be used for testing

makeFullCollection

public final java.util.Collection makeFullCollection()
Returns makeFullList().

Overrides:
makeFullCollection in class AbstractTestCollection
Returns:
a full list to be used for testing

getList

public java.util.List getList()
Returns the AbstractTestCollection.collection field cast to a AbstractTestList.BulkTestSubList.

Returns:
the collection field as a List

getConfirmedList

public java.util.List getConfirmedList()
Returns the AbstractTestCollection.confirmed field cast to a AbstractTestList.BulkTestSubList.

Returns:
the confirmed field as a List

testListAddByIndexBoundsChecking

public void testListAddByIndexBoundsChecking()
Tests bounds checking for List#add(int, Object) on an empty list.


testListAddByIndexBoundsChecking2

public void testListAddByIndexBoundsChecking2()
Tests bounds checking for List#add(int, Object) on a full list.


testListAddByIndex

public void testListAddByIndex()
Tests List#add(int,Object).


testListEquals

public void testListEquals()
Tests Object.equals(Object).


testListHashCode

public void testListHashCode()
Tests Object.hashCode().


testListGetByIndex

public void testListGetByIndex()
Tests List#get(int).


testListGetByIndexBoundsChecking

public void testListGetByIndexBoundsChecking()
Tests bounds checking for List#get(int) on an empty list.


testListGetByIndexBoundsChecking2

public void testListGetByIndexBoundsChecking2()
Tests bounds checking for List#get(int) on a full list.


testListIndexOf

public void testListIndexOf()
Tests List#indexOf.


testListLastIndexOf

public void testListLastIndexOf()
Tests List#lastIndexOf.


testListSetByIndexBoundsChecking

public void testListSetByIndexBoundsChecking()
Tests bounds checking for List#set(int,Object) on an empty list.


testListSetByIndexBoundsChecking2

public void testListSetByIndexBoundsChecking2()
Tests bounds checking for List#set(int,Object) on a full list.


testListSetByIndex

public void testListSetByIndex()
Test List#set(int,Object).


testUnsupportedSet

public void testUnsupportedSet()
If isSetSupported() returns false, tests that set operation raises UnsupportedOperationException.


testListRemoveByIndexBoundsChecking

public void testListRemoveByIndexBoundsChecking()
Tests bounds checking for List#remove(int) on an empty list.


testListRemoveByIndexBoundsChecking2

public void testListRemoveByIndexBoundsChecking2()
Tests bounds checking for List#remove(int) on a full list.


testListRemoveByIndex

public void testListRemoveByIndex()
Tests List#remove(int).


testListListIterator

public void testListListIterator()
Tests the read-only bits of List#listIterator().


testListListIteratorByIndex

public void testListListIteratorByIndex()
Tests the read-only bits of List#listIterator(int).


testListListIteratorPreviousRemoveNext

public void testListListIteratorPreviousRemoveNext()
Tests remove on list iterator is correct.


testListListIteratorPreviousRemovePrevious

public void testListListIteratorPreviousRemovePrevious()
Tests remove on list iterator is correct.


testListListIteratorNextRemoveNext

public void testListListIteratorNextRemoveNext()
Tests remove on list iterator is correct.


testListListIteratorNextRemovePrevious

public void testListListIteratorNextRemovePrevious()
Tests remove on list iterator is correct.


testListIteratorAdd

public void testListIteratorAdd()
Tests the ListIterator.add(Object) method of the list iterator.


testListIteratorSet

public void testListIteratorSet()
Tests the ListIterator.set(Object) method of the list iterator.


testEmptyListSerialization

public void testEmptyListSerialization()
                                throws java.io.IOException,
                                       java.lang.ClassNotFoundException
Throws:
java.io.IOException
java.lang.ClassNotFoundException

testFullListSerialization

public void testFullListSerialization()
                               throws java.io.IOException,
                                      java.lang.ClassNotFoundException
Throws:
java.io.IOException
java.lang.ClassNotFoundException

testEmptyListCompatibility

public void testEmptyListCompatibility()
                                throws java.io.IOException,
                                       java.lang.ClassNotFoundException
Compare the current serialized form of the List against the canonical version in CVS.

Throws:
java.io.IOException
java.lang.ClassNotFoundException

testFullListCompatibility

public void testFullListCompatibility()
                               throws java.io.IOException,
                                      java.lang.ClassNotFoundException
Compare the current serialized form of the List against the canonical version in CVS.

Throws:
java.io.IOException
java.lang.ClassNotFoundException

bulkTestSubList

public BulkTest bulkTestSubList()
Returns a BulkTest for testing List#subList(int,int). The returned bulk test will run through every TestList method, including another bulkTestSubList. Sublists are tested until the size of the sublist is less than 10. Each sublist is 6 elements smaller than its parent list. (By default this means that two rounds of sublists will be tested). The verify() method is overloaded to test that the original list is modified when the sublist is.


testListSubListFailFastOnAdd

public void testListSubListFailFastOnAdd()
Tests that a sublist raises a ConcurrentModificationException if elements are added to the original list.


testListSubListFailFastOnRemove

public void testListSubListFailFastOnRemove()
Tests that a sublist raises a ConcurrentModificationException if elements are removed from the original list.


failFastAll

protected void failFastAll(java.util.List list)
Invokes all the methods on the given sublist to make sure they raise a ConcurrentModificationException.


failFastMethod

protected void failFastMethod(java.util.List list,
                              java.lang.reflect.Method m)
Invokes the given method on the given sublist to make sure it raises a ConcurrentModificationException. Unless the method happens to be the equals() method, in which case the test is skipped. There seems to be a bug in java.util.AbstractList.subList(int,int).equals(Object) -- it never raises a ConcurrentModificationException.

Parameters:
list - the sublist to test
m - the method to invoke

bulkTestListIterator

public BulkTest bulkTestListIterator()


Copyright © 2001-2010 Apache Software Foundation. All Rights Reserved.