public void testPiteratorIndex2() {
int mSize = 15;
for (int startIdx = 0; startIdx < mSize; startIdx++) {
for (int pinnedIdx = 0; pinnedIdx < mSize; pinnedIdx++) {
LongCyclicQueue queue = new LongCyclicQueue();
queue.addAll(LongCollections.repeat(-1, startIdx));
queue.removeFirst(startIdx);
queue.addAll(range(mSize));
LongCyclicQueue.PinnedIterator it = queue.pinnedIterator();
checkRemoveAndCatchISE(queue, -1);
it.next();
assertEquals(0, it.index());
it.detach();
it = queue.pinnedIterator(pinnedIdx);
checkRemoveAndCatchISE(queue, pinnedIdx + 1);
it.next();
assertEquals(pinnedIdx != mSize - 1, it.hasNext());
assertEquals("startIdx = " + startIdx, pinnedIdx, it.index());
queue.addAll(1, 2, 3);
assertEquals(pinnedIdx, it.index());
if (pinnedIdx != 0) {
queue.removeFirst();
assertEquals(pinnedIdx - 1, it.index());
}
}
}
}