private <T> AutoCloseableIterator<T> applyOffsetAndLimit(AutoCloseableIterator<T> iterator) { Integer offset = this.offset; Integer limit = this.limit; if (offset != null) { Iterators.advance(iterator, offset.intValue()); } if (limit != null) { iterator = AutoCloseableIterator.limit(iterator, limit.intValue()); } return iterator; }
@Test public void testLimit() { AtomicBoolean closed = new AtomicBoolean(false); try (AutoCloseableIterator<String> testIter = new TestAutoCloseableIterator(closed)) { assertEquals(3, Iterators.size(testIter)); } assertTrue(closed.get()); closed.set(false); AutoCloseableIterator<String> testIter = new TestAutoCloseableIterator(closed); AutoCloseableIterator<String> limit = AutoCloseableIterator.limit(testIter, 2); assertEquals(2, Iterators.size(limit)); limit.close(); assertTrue(closed.get()); }