@Test void testPagingIterator() { Iterator<Integer> source = new RangeIterator( 24 ); PagingIterator<Integer> pager = new PagingIterator<>( source, 10 ); assertEquals( 0, pager.page() ); assertTrue( pager.hasNext() ); assertPage( pager.nextPage(), 10, 0 ); assertTrue( pager.hasNext() ); assertEquals( 1, pager.page() ); assertTrue( pager.hasNext() ); assertPage( pager.nextPage(), 10, 10 ); assertTrue( pager.hasNext() ); assertEquals( 2, pager.page() ); assertTrue( pager.hasNext() ); assertPage( pager.nextPage(), 4, 20 ); assertFalse( pager.hasNext() ); pager.page( 1 ); assertEquals( 1, pager.page() ); assertTrue( pager.hasNext() ); assertPage( pager.nextPage(), 10, 10 ); assertTrue( pager.hasNext() ); }
@Test void testCachingIterator() Iterator<Integer> source = new RangeIterator( 8 ); CachingIterator<Integer> caching = new CachingIterator<>( source );
"use strict"; function Range(low, high){ this.low = low; this.high = high; } Range.prototype[Symbol.iterator] = function(){ return new RangeIterator(this); }; function RangeIterator(range){ this.range = range; this.current = this.range.low; } RangeIterator.prototype.next = function(){ let result = {done: this.current > this.range.high, value: this.current}; this.current++; return result; }; var range = new Range(3, 5); for (var i of range) { console.log(i); }
function Range(low, high){ this.low = low; this.high = high; this.current = low; this.next = function() { if (this.current > this.range.high) throw StopIteration; else return this.current++; } } function RangeIterator(range){ this.range = range; this.current = this.range.low; } RangeIterator.prototype.next = function(){ if (this.current > this.range.high) throw StopIteration; else return this.current++; }; Range.prototype.__iterator__ = function(){ return new RangeIterator(this); }; var range = new Range(3, 5); for (var i in range) document.getElementById("test").innerHTML += i+"</br>"; // prints 3, then 4, then 5 in sequence