/** * @return the last element of the iterator reached either because * resolving no longer possible or there was a resolve error. */ @SuppressWarnings("unchecked") public Maybe<T> last() { Maybe<Object> last = peek(); while (hasNext()) { last = next(); if (last.isAbsent()) { return (Maybe<T>) last; } } return coerceValue(last, resolver.getType()); }
Maybe<Object> o1Actual = iter.next(); assertEquals(o1Actual.get(), o1Expected); assertEquals(o1Actual, iter.peek()); assertTrue(iter.hasNext()); Maybe<Object> o2Actual = iter.next(); assertEquals(o2Actual.get(), o2Expected); assertEquals(o2Actual, iter.peek()); assertTrue(iter.hasNext()); Maybe<Object> o3Actual = iter.next(); assertEquals(o3Actual.get(), o3Expected); assertEquals(o3Actual, iter.peek()); assertTrue(lastUntyped.isPresent(), "expected present - all resolves successful"); assertEquals(lastUntyped, iter.peek()); assertEquals(lastUntyped.get(), o3Expected);
Maybe<Object> wrapperActual = iter.next(); assertEquals(wrapperActual.get(), wrapperExpected); assertEquals(wrapperActual, iter.peek()); assertTrue(iter.hasNext()); Maybe<Object> failingActual = iter.next(); assertEquals(failingActual.get(), failingExpected); assertEquals(failingActual, iter.peek()); assertTrue(iter.hasNext()); Maybe<Object> absent = iter.next(); assertEquals(last, iter.peek());