#!perl
my
$arr
= Array;
isa_ok(
$arr
,
'Object::Array'
);
isa_ok(
$arr
,
'ARRAY'
);
is
$arr
->size, 0,
'size method'
;
is @{
$arr
}, 0,
'size deref'
;
is
$arr
->
push
(
qw(a b c)
), 3,
'push method'
;
is
$arr
->size, 3,
'size after push method'
;
is_deeply(
[ [ @{
$arr
} ], [
$arr
->elements ] ],
[ [
qw(a b c)
], [
qw(a b c)
] ],
'all method, all deref'
,
);
is_deeply(
[
$arr
->slice([ 1, 2 ]) ],
[
qw(b c)
],
'slice method get'
,
);
is
$arr
->
join
(
"."
),
"a.b.c"
,
"join method"
;
$arr
->slice([ 2, 3 ], [
qw(f d)
]);
is(
$arr
->[2],
'f'
,
'deref get after slice method set'
);
is(
$arr
->
grep
(
sub
{
$_
ne
"a"
})->
join
(
", "
),
"b, f, d"
,
"chained grep and join"
,
);
$arr
->[2] =
"c"
;
is
$arr
->element(3),
'd'
,
'method get after slice set'
;
is
$arr
->element(2),
'c'
,
'method get after deref set'
;
is $
is
$arr
->
shift
,
"a"
,
'shift method'
;
is
shift
(@{
$arr
}),
"b"
,
'shift builtin'
;
is
$arr
->
pop
,
"d"
,
'pop method'
;
is
pop
(@{
$arr
}),
"c"
,
'pop builtin'
;
@{
$arr
}[2,3] =
qw(g h)
;
ok !
$arr
->
exists
(0),
'exists method'
;
ok !
exists
$arr
->[1],
'exists builtin'
;
delete
$arr
->[2];
$arr
->
delete
(3);
is
$arr
->size, 0,
'size after delete method/builtin'
;
$arr
->
push
(1);
is
$arr
->size, 1,
'size after push method'
;
@{
$arr
} = ();
is
$arr
->size, 0,
'size after deref clear'
;
my
@orig
=
qw(a b c)
;
$arr
= Array(\
@orig
);
is
$arr
->[0],
"a"
,
'deref get'
;
is
$arr
->
pop
,
"c"
,
'pop method'
;
is_deeply(
\
@orig
,
[
qw(a b)
],
'original array'
,
);
is_deeply(
[
$arr
->
grep
(
sub
{
defined
}) ],
[
qw(a b)
],
'grep method'
,
);
is_deeply(
[
grep
{
defined
}
@$arr
],
[
qw(a b)
],
'grep deref'
,
);
is_deeply(
[
map
{ ++
$_
}
$arr
->elements ],
[
qw(b c)
],
'map deref'
,
);
is
$arr
->
map
(
sub
{ ++
$_
})->[-1],
"c"
,
'map method chained'
;