BEGIN {
DodTestUtil->check_driver;
plan
skip_all
=>
'Tests require Cache::Memory'
;
}
}
plan
tests
=> 17;
use_ok
'Data::ObjectDriver::Iterator'
;
my
$iter
;
$iter
= Data::ObjectDriver::Iterator->new(
sub
{});
ok Scalar::Util::blessed(
$iter
),
"blessed obj"
;
isa_ok
$iter
,
"CODE"
,
"it's a subref"
;
isa_ok
$iter
,
"Data::ObjectDriver::Iterator"
;
can_ok
$iter
,
"next"
;
is
$iter
->
next
,
undef
;
is
$iter
->(),
undef
;
my
$i
= 0;
my
$sub
=
sub
{
return
undef
if
$i
>= 10;
return
$i
++;
};
$iter
= Data::ObjectDriver::Iterator->new(
$sub
);
is
$iter
->
next
, 0;
is
$iter
->(), 1;
$i
= 11;
is
$iter
->(),
undef
;
$i
= 2;
$iter
->end();
is
$iter
->
next
, 2;
{
my
$sub2
=
sub
{
$sub
->() };
my
$iter2
= Data::ObjectDriver::Iterator->new(
$sub2
,
sub
{
$i
= 10 });
is
$iter2
->(), 3;
}
is
$i
, 10,
"end has been called"
;
{
$i
= 0;
my
$sub2
=
sub
{
$sub
->() };
my
$iter2
= Data::ObjectDriver::Iterator->new(
$sub2
,
sub
{
$i
= 10 });
{
my
$sub3
=
sub
{
$sub
->() };
my
$iter3
= Data::ObjectDriver::Iterator->new(
$sub3
,
sub
{
$i
= -1 });
is
$iter2
->(), 0;
is
$iter3
->(), 1;
}
is
$i
, -1;
}
is
$i
, 10;