Can you file a bug report at http://issues.apache.org/jira/browse/MAHOUT ?

Please attach your test case.

On Wed, Aug 25, 2010 at 7:25 AM, Laszlo Dosa <[email protected]>wrote:

> Hi,
>
>
>
> I tried to iterate over the elements of a SequentialAccessSparseVector.
>
> I run the following test and I observed that both iterators skip items:
>
>
>
>                int [] index = new int[] { 0, 1, 2, 3, 4, 5 };
>
>                int [] values = new int[] { 0, 1, 2, 3, 4, 5 };
>
>                SequentialAccessSparseVector vector;
>
>
>
>                @Before
>
>                public void setUp() {
>
>                               vector = new SequentialAccessSparseVector(6);
>
>                               for(int i = 0; i < Math.min(index.length,
> values.length); i++ ) {
>
>                                               vector.set(index[i],
> values[i]);
>
>                               }
>
>                }
>
> Case A:
>
>                @Test
>
>                public void testIteratorAll() {
>
>
>
>                               int elements = 0;
>
>                               Iterator<Element> it = vector.iterator();
>
>                               while (it.hasNext()) {
>
>
> System.out.println(it.next().get());
>
>                                               elements++;
>
>                               }
>
>
>
>
> assertEquals((int)vector.get(Math.min(index.length,
> values.length)-1),values[Math.min(index.length, values.length)-1]);
>
> à                          assertEquals(Math.min(index.length,
> values.length),elements);
>
>                }
>
>
>
> Case B:
>
>                @Test
>
>                public void testIteratorNonNull() {
>
>                               int elements = 0;
>
>                               Iterator<Element> it =
> vector.iterateNonZero();
>
>                               while (it.hasNext()) {
>
>
> System.out.println(it.next().get());
>
>                                               elements++;
>
>
>
>                               }
>
>
>
>
> assertEquals((int)vector.get(Math.min(index.length,
> values.length)-1),values[Math.min(index.length, values.length)-1]);
>
> è                        assertEquals(Math.min(index.length,
> values.length),elements);
>
>                }
>
>
>
> In both cases the second assertEquals fails, which indicates that not all
> elements have been reached.
>
>
>
> The result are as follows:
>
> Case A: Skips the last item.
>
> 0.0
>
> 1.0
>
> 2.0
>
> 3.0
>
> 4.0
>
>
>
> Case B: Skips the first item.
>
> 1.0
>
> 2.0
>
> 3.0
>
> 4.0
>
> 5.0
>
>
>
> Is this the expected behavior or do I misuse the library?
>
>
>
> Regards,
>
> Laszlo
>
>

Reply via email to