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.