You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Frank Hefter (JIRA)" <ji...@apache.org> on 2008/04/14 13:57:06 UTC

[jira] Issue Comment Edited: (COLLECTIONS-246) LoopingListIterator behaves unexpected on next and previous mixed

    [ https://issues.apache.org/jira/browse/COLLECTIONS-246?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12588547#action_12588547 ] 

fhefter edited comment on COLLECTIONS-246 at 4/14/08 4:55 AM:
-------------------------------------------------------------------

1. it.next() returns "0" this means the iterator is ON (not before or after) "0"
2. it.previous() should return the value before "0" - this is "2"

There is no before or after! What for ?

Following you opinion a  
it.next() 
it.previous 
it.next() 
it.previous 
it.next() 
a.s.o. 
should always return the same value. I would like to see this commands as button to navigate through a list. Would a user that press these button expect to stay at the same place? For sure not.

I think thats the mistake of your thinking. A command has to move the iterator. The former error was that I was not able to predict that.


      was (Author: fhefter):
    
1. it.next() returns "0" this means the iterator is ON (not before or after) "0"
2. it.previous() should return the value before "0" - this is "2"

There is no before or after! What for ?

Following you opinion a  
it.next() 
it.previous 
it.next() 
it.previous 
it.next() 
a.s.o. 
should always return the same value. I would like to see this commands as button to navigate through a list. Would a user that press these button expect to stay at the same place? For sure not.

I think thats the mistake of your thinking. A command has to move the iterator. The former error was that I was not able to predict that.

Hope it clear now.

  
> LoopingListIterator behaves unexpected on next and previous mixed
> -----------------------------------------------------------------
>
>                 Key: COLLECTIONS-246
>                 URL: https://issues.apache.org/jira/browse/COLLECTIONS-246
>             Project: Commons Collections
>          Issue Type: Bug
>          Components: Iterator
>    Affects Versions: 3.2
>         Environment: JDK 1.4.2_12 
> Common Collections 3.2
>            Reporter: Frank Hefter
>            Priority: Blocker
>             Fix For: 3.3
>
>         Attachments: LoopingListIterator.java, LoopingListIterator.java, LoopingListIteratorTest.java
>
>
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.