BEGIN {
plan
tests
=> 52;
}
my
(
$data
,
$item
,
$count
,
$wanted
,
@hashdata
);
$data
=
"foobar"
;
$item
;
$count
= 0;
$wanted
=
sub
{
++
$count
;
$item
=
$_
;
};
walk
$wanted
,
$data
;
ok
$count
, 1;
ok
$item
,
$data
;
$data
= [ (0 .. 4) ];
$count
= 0;
$wanted
=
sub
{
ok(
$Data::Walk::type
,
'ARRAY'
)
unless
ref
$_
;
++
$count
;
};
walk
$wanted
,
$data
;
ok
$count
, 1 + @{
$data
};
@hashdata
=
qw (a
b c d e);
$data
= {
map
{
$_
=>
$_
}
@hashdata
};
$count
= 0;
$wanted
=
sub
{
ok(
$Data::Walk::type
,
'HASH'
)
unless
ref
$_
;
++
$count
;
};
walk
$wanted
,
$data
;
ok
$count
, 1 + 2 *
@hashdata
;
@hashdata
=
qw (a
b c d e);
$data
= {
map
{
$_
=>
$_
}
@hashdata
};
my
@list
= (0 .. 4);
$data
->{list} = [
@list
];
$count
= 0;
$wanted
=
sub
{
++
$count
;
};
walk
$wanted
,
$data
;
ok
$count
, 1 + 2 *
@hashdata
+ 2 +
@list
;
$data
= [ (0 .. 4) ];
bless
$data
;
$count
= 0;
$wanted
=
sub
{
$DB::single
= 1;
ok(
$Data::Walk::type
,
'ARRAY'
)
unless
ref
$_
;
++
$count
;
};
walk
$wanted
,
$data
;
ok
$count
, 1 + @{
$data
};
@hashdata
=
qw (a
b c d e);
$data
= {
map
{
$_
=>
$_
}
@hashdata
};
bless
$data
;
$count
= 0;
$wanted
=
sub
{
ok(
$Data::Walk::type
,
'HASH'
)
unless
ref
$_
;
++
$count
;
};
walk
$wanted
,
$data
;
ok
$count
, 1 + 2 *
@hashdata
;
@hashdata
=
qw (a
b c d e);
$data
= {
map
{
$_
=>
$_
}
@hashdata
};
@list
= (0 .. 4);
$data
->{list} = [
@list
];
bless
$data
;
bless
$data
->{list};
$count
= 0;
$wanted
=
sub
{
++
$count
;
};
walk
$wanted
,
$data
;
ok
$count
, 1 + 2 *
@hashdata
+ 2 +
@list
;
$data
= [[[[[ 1 ], 11], 111], 1111], 11111];
my
$wasref
= 1;
my
$last
=
''
;
$wanted
=
sub
{
my
$isref
=
ref
$_
;
ok (
$wasref
|| (!
$wasref
&& !
$isref
));
$last
=
$_
;
$wasref
=
$isref
;
};
walk
$wanted
,
$data
;
ok !
$wasref
;
$data
= [
[
3, [ 4, 4, 4, ],
],
];
$wanted
=
sub
{
if
(
ref
$_
) {
my
$num
=
@$_
;
ok
$Data::Walk::depth
,
$num
;
}
else
{
$Data::Walk::depth
,
$_
;
}
};
walk
$wanted
,
$data
;