Uploaded image for project: 'Commons Collections'
  1. Commons Collections
  2. COLLECTIONS-246

LoopingListIterator behaves unexpected on next and previous mixed

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Invalid
    • 3.2
    • None
    • Iterator
    • None
    • JDK 1.4.2_12
      Common Collections 3.2

    Description

      Using ArrayList as the backing list.
      This combination at least returns unexpected results as you can see in the testcase below.
      I used this for a list navigator in a web frontend and had trouble with users.
      I suspect java.util.AbstrList$ListItr (role of "cursor" var seems to be wrong implemented ) to cause this problem. If so maybe we have to implement it in a different way.

      Testcase (it runs without hassle but the comments show whats wrong):
      -------------------------------------------
      import java.util.ArrayList;
      import junit.framework.TestCase;
      import org.apache.commons.collections.iterators.LoopingListIterator;

      public class SelectionControllerTest extends TestCase {
      public void testSelectorForApache()

      { ArrayList al = new ArrayList(); al.add("0"); al.add("1"); al.add("2"); LoopingListIterator it = new LoopingListIterator(al); assertEquals("0", it.next()); // This is OK // here I am on "0" assertEquals("0", it.previous()); // Wrong ! This should be 2! // here I am on "0" too! This is wrong. assertEquals("2", it.previous()); assertEquals("1", it.previous()); assertEquals("0", it.previous()); assertEquals("2", it.previous()); // here I am on "2" assertEquals("2", it.next()); // Wrong ! This should be 0! // here I am on "2" too! This is wrong. assertEquals("0", it.next()); assertEquals("1", it.next()); // here I am on "1" assertEquals("1", it.previous()); // Wrong ! This should be 0! }

      }
      -------------------------------------------

      Thanks for your help.

      Attachments

        1. LoopingListIterator.java
          9 kB
          Frank Hefter
        2. LoopingListIterator.java
          8 kB
          Dave Meikle
        3. LoopingListIteratorTest.java
          4 kB
          Frank Hefter

        Issue Links

          Activity

            People

              Unassigned Unassigned
              fhefter Frank Hefter
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: