use
Inline
Config
=>
DIRECTORY
=>
'./blib_test'
;
def return_empty_array():
return []
def return_onesized_array():
return [1]
def bounce_array(a):
return a
def perl_list(a):
return a.list();
def len_perl_list(a):
return len(a.list())
def len_perl_array(a):
return len(a.array())
def len_empty_perl_array(a):
return len(a.empty_array())
def return_tuple():
return (1, 2, 3)
END
my
$a
= py_call_function(
'__main__'
,
'return_empty_array'
);
ok(
ref
$a
eq
'ARRAY'
);
ok(
@$a
== 0,
'emtpy array ref -> empty list'
);
my
@a
= py_call_function(
'__main__'
,
'return_empty_array'
);
ok(
@a
== 0);
ok(
ref
scalar
py_call_function(
'__main__'
,
'return_onesized_array'
) eq
'ARRAY'
);
@a
= py_call_function(
'__main__'
,
'return_onesized_array'
);
ok(
@a
== 1);
ok(
ref
scalar
py_call_function(
'__main__'
,
'bounce_array'
, [Foo->new]) eq
'ARRAY'
);
@a
= py_call_function(
'__main__'
,
'bounce_array'
, [Foo->new]);
ok(
@a
== 1);
is((bounce_array([1, 2, 3]))[2], 3);
is((perl_list(Foo->new))[2], 3);
is(len_perl_list(Foo->new), 3);
is(len_perl_array(Foo->new), 3);
is(len_empty_perl_array(Foo->new), 0);
my
@b
= (0.1,0.2,0.3,0.4);
delta_ok((bounce_array(\
@b
))[0], 0.1);
map
(
$b
[
$_
]+
$b
[
$_
], 0..
$#b
);
delta_ok((bounce_array(\
@b
))[1], 0.2);
is(
ref
return_tuple(),
'ARRAY'
);
is(
scalar
@{ return_tuple() }, 3);
is(py_is_tuple(
scalar
return_empty_array()), 0);
is(py_is_tuple(
scalar
return_tuple()), 1);
is(py_is_tuple(
scalar
bounce_array(
scalar
return_tuple())), 1);
sub
new {
return
bless
{};
}
sub
list {
return
(1, 2, 3);
}
sub
array {
return
[1, 2, 3];
}
sub
empty_array {
return
[];
}