use strict;
use Test::More tests => 2;
use Object::Iterate qw(imap);
my $o = O->new();
my @o1 = imap { $_ } $o;
ok( eq_array( \@o1, [1..9] ),
'imap returns the right items on the first try' );
is( $o->{Array}, 'Done!', '__final__ did the right thing' );
BEGIN
{
package O;
sub new { my $c = shift;
bless { Pos => 0, Array => [1..9], Pos => 0 }, $c }
sub __more__ { $_[0]->{Pos} < @{ $_[0]->{Array} } }
sub __next__ { $_[0]->{Array}[$_[0]->{Pos}++] }
sub __final__ { $_[0]->{Array} = 'Done!' }
}