#!perl use Test::More (no_plan); package TestIterator; use Moose; use MooseX::Iterator; has numbers => ( is => 'ro', isa => 'ArrayRef', default => sub { [ 5, 6, 7, 8, 9, 10 ] }, ); has iter => ( metaclass => 'Iterable', iterate_over => 'numbers', ); no Moose; package main; my $test = TestIterator->new; my $it = $test->iter; my $count = 5; while ( $it->has_next ) { my $peek = $it->peek; my $next = $it->next; is $next, $count, 'Current position value ' . $count; if ( $count < 10 ) { ok $it->has_next, 'has next'; } else { ok !$it->has_next, 'does not have next'; last; } is $peek, $count + 1, 'peek ahead of ' . $count . " ($peek)"; $count += 1; }