Class AbstractTestList

All Implemented Interfaces:
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 List fails one of these tests by design, you may still use this base set of cases. Simply override the test case (method) your List fails or override one of the protected methods from AbstractTestCollection.

  • Constructor Details

    • AbstractTestList

      public AbstractTestList(String testName)
      JUnit constructor.
      Parameters:
      testName - the test class name
  • Method Details

    • 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 Collection makeConfirmedCollection()
      Returns an empty ArrayList.
      Specified by:
      makeConfirmedCollection in class AbstractTestCollection
      Returns:
      a confirmed empty collection
    • makeConfirmedFullCollection

      public Collection makeConfirmedFullCollection()
      Returns a full ArrayList.
      Specified by:
      makeConfirmedFullCollection in class AbstractTestCollection
      Returns:
      a confirmed full collection
    • makeEmptyList

      public abstract List makeEmptyList()
      Return a new, empty List to be used for testing.
      Returns:
      an empty list for testing.
    • makeFullList

      public List makeFullList()
      Return a new, full List to be used for testing.
      Returns:
      a full list for testing
    • makeCollection

      public final Collection makeCollection()
      Specified by:
      makeCollection in class AbstractTestCollection
      Returns:
      an empty list to be used for testing
    • makeFullCollection

      public final Collection makeFullCollection()
      Overrides:
      makeFullCollection in class AbstractTestCollection
      Returns:
      a full list to be used for testing
    • getList

      public List getList()
      Returns the AbstractTestCollection.collection field cast to a List.
      Returns:
      the collection field as a List
    • getConfirmedList

      public List getConfirmedList()
      Returns the AbstractTestCollection.confirmed field cast to a List.
      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()
    • testListEquals

      public void testListEquals()
    • testListHashCode

      public void testListHashCode()
    • testListGetByIndex

      public void testListGetByIndex()
    • 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()
    • testListLastIndexOf

      public void testListLastIndexOf()
    • 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()
    • 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()
    • 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 IOException, ClassNotFoundException
      Throws:
      IOException
      ClassNotFoundException
    • testFullListSerialization

      public void testFullListSerialization() throws IOException, ClassNotFoundException
      Throws:
      IOException
      ClassNotFoundException
    • testEmptyListCompatibility

      public void testEmptyListCompatibility() throws IOException, ClassNotFoundException
      Compare the current serialized form of the List against the canonical version in CVS.
      Throws:
      IOException
      ClassNotFoundException
    • testFullListCompatibility

      public void testFullListCompatibility() throws IOException, ClassNotFoundException
      Compare the current serialized form of the List against the canonical version in CVS.
      Throws:
      IOException
      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(List list)
      Invokes all the methods on the given sublist to make sure they raise a ConcurrentModificationException.
    • failFastMethod

      protected void failFastMethod(List list, 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()