@Override public Integer next() { if (!hasNext()) return null; int returnValue = next; next = bitset.nextSetBit(next + 1); if (++count >= limit) next = -1; return returnValue; }
@Test public void testEmpty() { BitSetIterator it = new BitSetIterator(new BitSet()); Assert.assertFalse(it.hasNext()); Assert.assertNull(it.next()); }
@Test public void testNormal() { BitSet bs = new BitSet(); for (int i = 0; i < 5; i++) { bs.set(i * 2); } int count = 0; BitSetIterator it = new BitSetIterator(bs); while (it.hasNext()) { Integer value = it.next(); Assert.assertTrue(bs.get(value)); count++; } Assert.assertEquals(bs.cardinality(), count); }
private void assertRange(BitSet bs, Integer start, Integer limit) { int count = 0; BitSetIterator it = new BitSetIterator(bs, start, limit); while (it.hasNext()) { Integer value = it.next(); Assert.assertTrue(bs.get(value)); count++; } if (limit == null) { int expected = (start == null || start==0) ? bs.cardinality() : (bs.cardinality() - start)+1; Assert.assertEquals(expected, count); } else { int max = Math.min(limit, bs.cardinality()); int expected = (start == null || start==0) ? max : Math.min((bs.cardinality() - start)+1, max); if (expected<0) expected=0; Assert.assertEquals(expected, count); } } }