assertEquals( (Integer) 1, caching.next() ); assertTrue( caching.hasPrevious() ); assertEquals( (Integer) 1, caching.current() ); assertEquals( (Integer) 2, caching.next() ); assertEquals( (Integer) 2, caching.current() ); assertEquals( (Integer) 3, (Integer) caching.position() ); assertEquals( (Integer) 2, caching.current() ); assertTrue( caching.hasPrevious() ); assertEquals( (Integer) 2, caching.previous() ); assertEquals( (Integer) 2, caching.current() ); assertEquals( (Integer) 2, (Integer) caching.position() ); assertEquals( (Integer) 1, caching.previous() ); assertEquals( (Integer) 1, caching.current() ); assertEquals( (Integer) 1, (Integer) caching.position() ); assertEquals( (Integer) 0, caching.previous() ); assertEquals( (Integer) 0, caching.current() ); assertEquals( 0, caching.position( 3 ) ); assertEquals( (Integer) 3, caching.current() ); assertTrue( caching.hasPrevious() ); assertEquals( (Integer) 4, caching.next() ); assertEquals( 5, caching.position() ); assertEquals( (Integer) 4, caching.previous() ); assertEquals( (Integer) 4, caching.current() ); assertEquals( (Integer) 4, caching.current() ); assertEquals( 4, caching.position() ); assertEquals( (Integer) 3, caching.previous() );