Java
=>
'DATA'
) ;
BEGIN {
plan(
tests
=> 55) ;
}
my
$t
= new types5() ;
{
ok(++(
$t
->_byte([12, 34, 56])->[0]) == 124) ;
ok(eq_array(
$t
->_Byte([12, 34, 56]), [12, 34, 56])) ;
ok(++(
$t
->_short([12, 34, 56])->[0]) == 124) ;
ok(eq_array(
$t
->_Short([12, 34, 56]), [12, 34, 56])) ;
ok(++(
$t
->_int([12, 34, 56])->[0]) == 124) ;
ok(eq_array(
$t
->_Integer([12, 34, 56]), [12, 34, 56])) ;
ok(++(
$t
->_long([12, 34, 56])->[0]) == 124) ;
ok(eq_array(
$t
->_Long([12, 34, 56]), [12, 34, 56])) ;
ok(++(
$t
->_float([12.34, 5.6, 7])->[0]) == 124.456) ;
ok(eq_array(
$t
->_Float([12.34, 5.6, 7]), [12.34, 5.6, 7])) ;
ok(++(
$t
->_double([12.34, 5.6, 7])->[0]) == 124.456) ;
ok(eq_array(
$t
->_Double([12.34, 5.6, 7]), [12.34, 5.6, 7])) ;
ok(
$t
->_boolean([1, 0,
"tree"
])->[0]) ;
ok(
$t
->_Boolean([1, 0])->[0]) ;
ok(!
$t
->_Boolean([1, 0])->[1]) ;
ok(
$t
->_char([
'a'
,
'b'
,
'c'
])->[0],
"A"
) ;
ok(eq_array(
$t
->_Character([
'a'
,
'b'
,
'c'
]), [
'a'
,
'b'
,
'c'
], 1)) ;
my
$a
=
$t
->_String([
"bla"
,
"ble"
,
"bli"
]) ;
ok(
$a
->[0],
"STRING"
) ;
$a
->[1] =
"wazoo"
;
ok(
$a
->[1],
"wazoo"
) ;
ok(
$t
->_StringBuffer([
"bla"
,
"ble"
,
"bli"
])->[0],
"STRINGBUFFER"
) ;
ok(
$t
->_Object(
undef
),
undef
) ;
$a
=
$t
->_Object([1,
"two"
,
$t
]) ;
ok(
$a
->[0],
"1"
) ;
ok(
$a
->[1],
"two"
) ;
my
$a2
= cast(
'types5'
,
$a
->[2]);
ok(UNIVERSAL::isa(
$a2
,
"main::types5"
)) ;
ok(
$a2
->{data}->[1],
"a"
) ;
$a2
->{data} = [
"1"
,
"2"
] ;
ok(
$a2
->{data}->[1], 2) ;
$a
->[0]++ ;
ok(
$a
->[0],
"2"
) ;
$a
->[1] =
"three"
;
ok(
$a
->[1],
"three"
) ;
$a
->[2] =
"string"
;
ok(
$a
->[2],
"string"
) ;
$a
->[0] =
$t
;
ok(UNIVERSAL::isa(cast(
'types5'
,
$a
->[0]),
"main::types5"
)) ;
$a
=
$t
->_StringString([
[
"00"
,
"01"
],
[
"10"
,
"11"
]
]) ;
$a
=
$t
->_StringString([
[
undef
,
"01"
,
"02"
],
[
undef
,
"11"
],
undef
,
]) ;
ok(
$a
->[1]->[0],
undef
) ;
my
$b
=
$a
->[1] ;
ok(
$t
->_String(
$b
)->[0],
"STRING"
) ;
$a
=
$t
->_StringString([
$a
->[0],
]) ;
ok(
$a
->[0]->[2],
"02"
) ;
eval
{
$t
->_o([
"a"
,
"b"
,
"c"
])} ; ok($@,
qr/Can't create Java array/
) ;
ok(
$t
->_o(Inline::Java::coerce(
"java.lang.Object"
,
[
"a"
,
"b"
,
"c"
],
"[Ljava.lang.String;"
))->[0],
"a"
) ;
$t
->{o} = Inline::Java::coerce(
"java.lang.Object"
,
[
"a"
,
"b"
,
"c"
],
"[Ljava.lang.String;"
) ;
ok(
$t
->{o}->[0],
"a"
) ;
$t
->{o} =
$t
->{i} ;
ok(
$t
->{o}->[0],
"1"
) ;
eval
{
$t
->_int([
"3"
,
"3456"
,
"cat"
])} ; ok($@,
qr/Can't convert/
) ;
ok(
$t
->_Object([
"3"
,
"3456"
,
"cat"
])->[2],
'cat'
) ;
eval
{
$t
->_int([
"3"
, [],
"cat"
])} ; ok($@,
qr/Java array contains mixed types/
) ;
eval
{
$t
->_StringString([[
"3"
],
"string"
])} ; ok($@,
qr/Java array contains mixed types/
) ;
eval
{@{
$b
} = ()} ; ok($@,
qr/Operation CLEAR/
) ;
eval
{
pop
@{
$b
}} ; ok($@,
qr/Operation POP/
) ;
eval
{
shift
@{
$b
}} ; ok($@,
qr/Operation SHIFT/
) ;
eval
{
splice
(@{
$b
}, 0, 1)} ; ok($@,
qr/Operation SPLICE/
) ;
eval
{
$b
->[10] = 5} ; ok($@,
qr/out of bounds/
) ;
$a
=
$t
->_byte([12, 34, 56]) ;
ok(
scalar
(@{
$a
}), 3) ;
foreach
my
$e
(@{
$a
}){
ok(
$e
=~ /^(123|34|56)$/) ;
}
$a
=
$t
->_Byte([]) ;
ok(
scalar
(
@$a
), 0) ;
$a
=
$t
->_StringString([[], []]) ;
ok(
scalar
(@{
$a
}), 2) ;
ok(
scalar
(@{
$a
->[0]}), 0) ;
ok(
scalar
(@{
$a
->[1]}), 0) ;
}
ok(
$t
->__get_private()->{proto}->ObjectCount(), 1) ;
sub
eq_array {
my
$a1
=
shift
;
my
$a2
=
shift
;
my
$eq
=
shift
|| 0 ;
if
(
scalar
(@{
$a1
}) !=
scalar
(@{
$a2
})){
return
0 ;
}
my
$ok
= 1 ;
for
(0..$
if
(
$eq
){
$ok
= (
$a1
->[
$_
] eq
$a2
->[
$_
]) ;
}
else
{
$ok
= (
$a1
->[
$_
] ==
$a2
->[
$_
]) ;
}
last
unless
$ok
;
}
return
$ok
;
}