BEGIN {
plan
tests
=> 160;
}
my
(
$wanted
,
$count
,
$preprocess
,
$preprocessor_calls
,
$last
);
my
%data
= (
'A'
..
'Z'
,
'a'
..
'z'
);
$preprocessor_calls
= 0;
$preprocess
=
sub
{
my
%container
=
@_
;
my
@sorted
;
foreach
my
$key
(
sort
keys
%container
) {
push
@sorted
,
$key
,
$container
{
$key
};
}
++
$preprocessor_calls
;
return
@sorted
;
};
$last
=
''
;
$wanted
=
sub
{
unless
(
ref
$_
) {
ok(
$_
gt
$last
);
$last
=
$_
;
}
};
walk {
wanted
=>
$wanted
,
preprocess
=>
$preprocess
}, \
%data
;
ok
$preprocessor_calls
;
my
@data
= (
'A'
..
'Z'
,
'a'
..
'z'
);
$preprocessor_calls
= 0;
$preprocess
=
sub
{
++
$preprocessor_calls
;
return
reverse
sort
@_
;
};
$last
=
chr
(1 +
ord
$data
[-1]);
$wanted
=
sub
{
unless
(
ref
$_
) {
ok(
$_
lt
$last
);
$last
=
$_
;
}
};
walk {
wanted
=>
$wanted
,
preprocess
=>
$preprocess
}, \
@data
;
ok
$preprocessor_calls
;
%data
= (
'A'
..
'Z'
,
'a'
..
'z'
);
$preprocessor_calls
= 0;
$preprocess
=
sub
{
my
%container
=
@_
;
my
@sorted
;
foreach
my
$key
(
sort
keys
%container
) {
push
@sorted
,
$key
,
$container
{
$key
};
}
++
$preprocessor_calls
;
return
@sorted
;
};
$last
=
''
;
$wanted
=
sub
{
unless
(
ref
$_
) {
ok(
$_
gt
$last
);
$last
=
$_
;
}
};
walk {
wanted
=>
$wanted
,
preprocess_hash
=>
$preprocess
}, \
%data
;
ok
$preprocessor_calls
;
@data
= (
'A'
..
'Z'
,
'a'
..
'z'
);
$preprocessor_calls
= 0;
$preprocess
=
sub
{
++
$preprocessor_calls
;
};
$wanted
=
sub
{};
walk {
wanted
=>
$wanted
,
preprocess_hash
=>
$preprocess
}, \
@data
;
ok(!
$preprocessor_calls
);