Class 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 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 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
      • makeEmptyList

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

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

        public java.util.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()
        Tests List.add(int,Object).
      • testListEquals

        public void testListEquals()
        Tests List.equals(Object).
      • testListHashCode

        public void testListHashCode()
        Tests List.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(java.lang.Object).
      • testListLastIndexOf

        public void testListLastIndexOf()
        Tests List.lastIndexOf(java.lang.Object).
      • 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()