@Test void testEmptyIterator() { FirstItemIterable<?> firstItemIterable = new FirstItemIterable<>( Collections.emptyList() ); Iterator<?> empty = firstItemIterable.iterator(); assertFalse( empty.hasNext() ); try { empty.next(); fail( "Exception expected" ); } catch ( Exception e ) { assertThat( e, instanceOf( NoSuchElementException.class ) ); } assertNull( firstItemIterable.getFirst() ); }
@Test void testSingleIterator() { FirstItemIterable<Boolean> firstItemIterable = new FirstItemIterable<>( Collections.singleton( Boolean.TRUE ) ); Iterator<Boolean> empty = firstItemIterable.iterator(); assertTrue( empty.hasNext() ); assertEquals( Boolean.TRUE, empty.next() ); assertEquals( Boolean.TRUE, firstItemIterable.getFirst() ); assertFalse( empty.hasNext() ); try { empty.next(); fail( "Exception expected" ); } catch ( Exception e ) { assertThat( e, instanceOf( NoSuchElementException.class ) ); } assertEquals( Boolean.TRUE, firstItemIterable.getFirst() ); }
@Test void testMultiIterator() { FirstItemIterable<Boolean> firstItemIterable = new FirstItemIterable<>( asList( Boolean.TRUE, Boolean.FALSE ) ); Iterator<Boolean> empty = firstItemIterable.iterator(); assertTrue( empty.hasNext() ); assertEquals( Boolean.TRUE, empty.next() ); assertEquals( Boolean.TRUE, firstItemIterable.getFirst() ); assertTrue( empty.hasNext() ); assertEquals( Boolean.FALSE, empty.next() ); assertEquals( Boolean.TRUE, firstItemIterable.getFirst() ); assertFalse( empty.hasNext() ); try { empty.next(); fail( "Exception expected" ); } catch ( Exception e ) { assertThat( e, instanceOf( NoSuchElementException.class ) ); } assertEquals( Boolean.TRUE, firstItemIterable.getFirst() ); } }