#!perl
my
@UTILS
=
@Object::Array::Plugin::ListMoreUtils::UTILS
;
my
%ARR
= (
DEFAULT
=> [ 1,
undef
, 0,
"a"
,
"z"
],
minmax
=> [ 1, 5, -3, 7, 2.5 ],
uniq
=> [ 1, 0, 7, 7, 2, 0, 5 ],
);
my
%ARG
= (
DEFAULT
=> [
sub
{
defined
} ],
apply
=> [
sub
{ ++
$_
} ],
insert_after
=> [
sub
{ !
defined
},
"hello"
],
insert_after_string
=> [
'a'
,
'bcd'
],
);
my
%SKIP_RESULT
= (
map
{
$_
=> 1 }
qw(natatime)
,
);
my
%NEED_REF
= (
map
{
$_
=> 1 }
qw(insert_after insert_after_string)
);
plan(
tests
=> 6 +
@UTILS
* 2 -
keys
%SKIP_RESULT
);
no
strict
'refs'
;
for
my
$util
(
@UTILS
) {
my
@arr
= @{
$ARR
{
$util
} ||
$ARR
{DEFAULT} };
my
$arr
= Array [
@arr
];
local
$SIG
{__WARN__} =
sub
{ diag(
"$util: @_"
) };
my
@args
= @{
$ARG
{
$util
} ||
$ARG
{DEFAULT} };
my
$got
= [
$arr
->
$util
(
@args
) ];
my
$want
= [ &{
"List::MoreUtils::$util"
}(
@args
, (
$NEED_REF
{
$util
} ? \
@arr
:
@arr
),
) ];
my
$error
= 0;
$SKIP_RESULT
{
$util
} || is_deeply(
$got
,
$want
,
"$util: result"
) or
$error
++;
is_deeply([
@$arr
], \
@arr
,
"$util: arrays"
) or
$error
++;
$error
and diag(Dumper(
$got
,
$want
,
$arr
, \
@arr
,
));
}
my
$ref
= \1;
my
$arr
= Array([ 1, 5,
"hello"
,
$ref
,
undef
, 0 ]);
ok(
$arr
->contains(
undef
),
"array contains undef"
);
ok(!
$arr
->contains(
""
),
"empty string doesn't match undef"
);
ok(
$arr
->contains(
"hello"
),
"array contains string"
);
ok(
$arr
->contains(5),
"array contains number"
);
ok(
$arr
->contains(
"5.00"
),
"array contains number (string)"
);
ok(
$arr
->contains(
$ref
),
"array contains reference"
);