use Test::More tests => 8; use strict; use warnings; use Iterator::Simple qw(list iterator); { my $now = 0; my $itr = iterator { return if $now > 5; return $now++; }; is_deeply list($itr), [0,1,2,3,4,5], 'list(iterator)'; } { my @ary = ('dogs', 'cats','cow'); is_deeply list(\@ary), ['dogs', 'cats', 'cow'], 'list(ARRAY REF)'; } { is_deeply list(\*DATA), ["foo\n", "bar\n", "baz\n"], 'list(GLOB)'; } { my $foo = Foo->new(); is_deeply list($foo), ['hoge', 'hage'], 'list(@{} overloaded)'; } { my $bar = Bar->new(); is_deeply list($bar) , [0,1,2,3], 'list(__iter__ implemented)'; } { my $baz = Baz->new(); is_deeply list($baz) , [0,1,2,3,4,5], 'list(<> overloaded)'; } { my $fiz = Fiz->new(); is_deeply list($fiz) , [0,1,2,3,4,5,6,7], 'list(next implemented)'; } { is_deeply list(), [], 'list()'; } { package Foo; sub new { bless {i => 0}, $_[0]; } use overload ( '@{}' => sub { [ 'hoge', 'hage'] }, ); } { package Bar; use Iterator::Simple qw(iterator); sub new { bless {i => 0}, $_[0]; } sub __iter__ { my($self) = @_; my $k = 0; iterator { return if $k > 3; return $k++; } } } { package Baz; sub new { bless {i => 0}, $_[0]; } use overload ( '<>' => sub { my($self) = @_; return if $self->{i} > 5; return $self->{i}++; } ); } { package Fiz; sub new { bless {i => 0}, $_[0]; } sub next { my($self) = @_; return if $self->{i} > 7; return $self->{i}++; } } __END__ foo bar baz