This is an automated email from the git hooks/post-receive script. js pushed a commit to tag 0.55 in repository libinline-java-perl.
commit 71f216b0a414c21f57a7857e0d26207623d2552d Author: Patrick LeBoutillier <p...@cpan.org> Date: Mon Sep 17 19:46:33 2001 +0000 *** empty log message *** --- CHANGES | 11 ++ t/02_primitives.t | 296 +++++++++++++++++++++++++++--------------------------- t/03_objects.t | 90 +++++++++-------- t/04_members.t | 152 ++++++++++++++-------------- t/05_arrays.t | 202 +++++++++++++++++++++---------------- t/06_static.t | 54 ++++++---- t/07_polymorph.t | 71 +++++++------ t/08_study.t | 32 +++--- 8 files changed, 492 insertions(+), 416 deletions(-) diff --git a/CHANGES b/CHANGES index 397ee75..798a76d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,17 @@ Revision history for Perl extension Inline::Java ------------------------------------------------ +0.30 Mon Sep 17 15:45:06 EDT 2001 + - JVM server is now multi-threaded + - Added 'SHARED_JVM' option for mod_perl support + - Beefed up test suite + +0.23 Thu Aug 30 08:41:11 EDT 2001 + - Added support for multiple Inline sections using a special notation + in the CLASSPATH. + - Added the 'fix' Makefile.PL option au automatically fix the Makefile + for Win95/98/Me. + 0.22 Fri Jun 1 13:31:35 EDT 2001 - Fixed up Inline::Java to work with Inline 0.41 - Added support for java.lang.Number as a primitive numeric type. Any diff --git a/t/02_primitives.t b/t/02_primitives.t index 360c445..11d04a2 100644 --- a/t/02_primitives.t +++ b/t/02_primitives.t @@ -10,158 +10,162 @@ use Inline( BEGIN { - plan(tests => 106) ; + plan(tests => 107) ; } -my $t = new types() ; - -my $max = undef ; -my $min = undef ; - -$max = 127 ; -$min = -128 ; -ok($t->_byte(undef) == 1) ; -ok($t->_byte(0) == 1) ; -ok($t->_byte($max - 1) == $max) ; -ok($t->_byte("$min") == $min + 1) ; -eval {$t->_byte($max + 1)} ; ok($@, qr/out of range/) ; -eval {$t->_byte($min - 1)} ; ok($@, qr/out of range/) ; -ok($t->_Byte(undef) == 0) ; -ok($t->_Byte(0) == 0) ; -ok($t->_Byte($max) == $max) ; -ok($t->_Byte("$min") == $min) ; -eval {$t->_Byte($max + 1)} ; ok($@, qr/out of range/) ; -eval {$t->_Byte($min - 1)} ; ok($@, qr/out of range/) ; - -$max = 32767 ; -$min = -32768 ; -ok($t->_short(undef) == 1) ; -ok($t->_short(0) == 1) ; -ok($t->_short($max - 1) == $max) ; -ok($t->_short("$min") == $min + 1) ; -eval {$t->_short($max + 1)} ; ok($@, qr/out of range/) ; -eval {$t->_short($min - 1)} ; ok($@, qr/out of range/) ; -ok($t->_Short(undef) == 0) ; -ok($t->_Short(0) == 0) ; -ok($t->_Short($max) == $max) ; -ok($t->_Short("$min") == $min) ; -eval {$t->_Short($max + 1)} ; ok($@, qr/out of range/) ; -eval {$t->_Short($min - 1)} ; ok($@, qr/out of range/) ; - -$max = 2147483647 ; -$min = -2147483648 ; -ok($t->_int(undef) == 1) ; -ok($t->_int(0) == 1) ; -ok($t->_int($max - 1) == $max) ; -ok($t->_int("$min") == $min + 1) ; -eval {$t->_int($max + 1)} ; ok($@, qr/out of range/) ; -eval {$t->_int($min - 1)} ; ok($@, qr/out of range/) ; -ok($t->_Integer(undef) == 0) ; -ok($t->_Integer(0) == 0) ; -ok($t->_Integer($max) == $max) ; -ok($t->_Integer("$min") == $min) ; -eval {$t->_Integer($max + 1)} ; ok($@, qr/out of range/) ; -eval {$t->_Integer($min - 1)} ; ok($@, qr/out of range/) ; - -$max = 2147483647 ; -$min = -2147483648 ; -ok($t->_long(undef) == 1) ; -ok($t->_long(0) == 1) ; -ok($t->_long($max - 1) == $max) ; -ok($t->_long("$min") == $min + 1) ; -eval {$t->_long($max + 1)} ; ok($@, qr/out of range/) ; -eval {$t->_long($min - 1)} ; ok($@, qr/out of range/) ; -ok($t->_Long(undef) == 0) ; -ok($t->_Long(0) == 0) ; -ok($t->_Long($max) == $max) ; -ok($t->_Long("$min") == $min) ; -eval {$t->_Long($max + 1)} ; ok($@, qr/out of range/) ; -eval {$t->_Long($min - 1)} ; ok($@, qr/out of range/) ; - -$max = 3.4028235e38 ; -$min = -3.4028235e38 ; -ok($t->_float(undef) == 1) ; -ok($t->_float(0) == 1) ; -ok($t->_float($max - 1) == $max) ; -ok($t->_float("$min") == $min + 1) ; -eval {$t->_float($max + $max)} ; ok($@, qr/out of range/) ; -eval {$t->_float($min + $min)} ; ok($@, qr/out of range/) ; -ok($t->_Float(undef) == 0) ; -ok($t->_Float(0) == 0) ; -ok($t->_Float($max) == $max) ; -ok($t->_Float("$min") == $min) ; -eval {$t->_Float($max + $max)} ; ok($@, qr/out of range/) ; -eval {$t->_Float($min + $min)} ; ok($@, qr/out of range/) ; - -$max = 3.4028235e38 ; -$min = -3.4028235e38 ; -ok($t->_double(undef) == 1) ; -ok($t->_double(0) == 1) ; -ok($t->_double($max - 1) == $max) ; -ok($t->_double("$min") == $min + 1) ; -eval {$t->_double($max + $max)} ; ok($@, qr/out of range/) ; -eval {$t->_double($min + $min)} ; ok($@, qr/out of range/) ; -ok($t->_Double(undef) == 0) ; -ok($t->_Double(0) == 0) ; -ok($t->_Double($max) == $max) ; -ok($t->_Double("$min") == $min) ; -eval {$t->_Double($max + $max)} ; ok($@, qr/out of range/) ; -eval {$t->_Double($min + $min)} ; ok($@, qr/out of range/) ; - -# Number is forced to Double -$max = 3.4028235e38 ; -$min = -3.4028235e38 ; -ok($t->_Number(undef) == 0) ; -ok($t->_Number(0) == 0) ; -ok($t->_Number($max) == $max) ; -ok($t->_Number("$min") == $min) ; -eval {$t->_Number($max + $max)} ; ok($@, qr/out of range/) ; -eval {$t->_Number($min + $min)} ; ok($@, qr/out of range/) ; - -ok(! $t->_boolean(undef)) ; -ok(! $t->_boolean(0)) ; -ok(! $t->_boolean("")) ; -ok($t->_boolean("true")) ; -ok($t->_boolean(1)) ; -ok(! $t->_Boolean(undef)) ; -ok(! $t->_Boolean(0)) ; -ok(! $t->_Boolean("")) ; -ok($t->_Boolean("true")) ; -ok($t->_Boolean(1)) ; - -ok($t->_char(undef), "\0") ; -ok($t->_char(0), "0") ; -ok($t->_char("1"), '1') ; -eval {$t->_char("10")} ; ok($@, qr/Can't convert/) ; -ok($t->_Character(undef), "\0") ; -ok($t->_Character(0), "0") ; -ok($t->_Character("1"), '1') ; -eval {$t->_Character("10")} ; ok($@, qr/Can't convert/) ; - -ok($t->_String(undef), undef) ; -ok($t->_String(0), "0") ; -ok($t->_String("string"), 'string') ; -ok($t->_StringBuffer(undef), undef) ; -ok($t->_StringBuffer(0), "0") ; -ok($t->_StringBuffer("stringbuffer"), 'stringbuffer') ; - -# Test if scalars can pass as java.lang.Object. -# They should be converted to strings. -ok($t->_Object(undef), undef) ; -ok($t->_Object(0), "0") ; -ok($t->_Object(666) == 666) ; -ok($t->_Object("object"), 'object') ; - - - - -__END__ +my $t = new types2() ; + +{ + my $max = undef ; + my $min = undef ; + + $max = 127 ; + $min = -128 ; + ok($t->_byte(undef) == 1) ; + ok($t->_byte(0) == 1) ; + ok($t->_byte($max - 1) == $max) ; + ok($t->_byte("$min") == $min + 1) ; + eval {$t->_byte($max + 1)} ; ok($@, qr/out of range/) ; + eval {$t->_byte($min - 1)} ; ok($@, qr/out of range/) ; + ok($t->_Byte(undef) == 0) ; + ok($t->_Byte(0) == 0) ; + ok($t->_Byte($max) == $max) ; + ok($t->_Byte("$min") == $min) ; + eval {$t->_Byte($max + 1)} ; ok($@, qr/out of range/) ; + eval {$t->_Byte($min - 1)} ; ok($@, qr/out of range/) ; + + $max = 32767 ; + $min = -32768 ; + ok($t->_short(undef) == 1) ; + ok($t->_short(0) == 1) ; + ok($t->_short($max - 1) == $max) ; + ok($t->_short("$min") == $min + 1) ; + eval {$t->_short($max + 1)} ; ok($@, qr/out of range/) ; + eval {$t->_short($min - 1)} ; ok($@, qr/out of range/) ; + ok($t->_Short(undef) == 0) ; + ok($t->_Short(0) == 0) ; + ok($t->_Short($max) == $max) ; + ok($t->_Short("$min") == $min) ; + eval {$t->_Short($max + 1)} ; ok($@, qr/out of range/) ; + eval {$t->_Short($min - 1)} ; ok($@, qr/out of range/) ; + + $max = 2147483647 ; + $min = -2147483648 ; + ok($t->_int(undef) == 1) ; + ok($t->_int(0) == 1) ; + ok($t->_int($max - 1) == $max) ; + ok($t->_int("$min") == $min + 1) ; + eval {$t->_int($max + 1)} ; ok($@, qr/out of range/) ; + eval {$t->_int($min - 1)} ; ok($@, qr/out of range/) ; + ok($t->_Integer(undef) == 0) ; + ok($t->_Integer(0) == 0) ; + ok($t->_Integer($max) == $max) ; + ok($t->_Integer("$min") == $min) ; + eval {$t->_Integer($max + 1)} ; ok($@, qr/out of range/) ; + eval {$t->_Integer($min - 1)} ; ok($@, qr/out of range/) ; + + $max = 2147483647 ; + $min = -2147483648 ; + ok($t->_long(undef) == 1) ; + ok($t->_long(0) == 1) ; + ok($t->_long($max - 1) == $max) ; + ok($t->_long("$min") == $min + 1) ; + eval {$t->_long($max + 1)} ; ok($@, qr/out of range/) ; + eval {$t->_long($min - 1)} ; ok($@, qr/out of range/) ; + ok($t->_Long(undef) == 0) ; + ok($t->_Long(0) == 0) ; + ok($t->_Long($max) == $max) ; + ok($t->_Long("$min") == $min) ; + eval {$t->_Long($max + 1)} ; ok($@, qr/out of range/) ; + eval {$t->_Long($min - 1)} ; ok($@, qr/out of range/) ; + + $max = 3.4028235e38 ; + $min = -3.4028235e38 ; + ok($t->_float(undef) == 1) ; + ok($t->_float(0) == 1) ; + ok($t->_float($max - 1) == $max) ; + ok($t->_float("$min") == $min + 1) ; + eval {$t->_float($max + $max)} ; ok($@, qr/out of range/) ; + eval {$t->_float($min + $min)} ; ok($@, qr/out of range/) ; + ok($t->_Float(undef) == 0) ; + ok($t->_Float(0) == 0) ; + ok($t->_Float($max) == $max) ; + ok($t->_Float("$min") == $min) ; + eval {$t->_Float($max + $max)} ; ok($@, qr/out of range/) ; + eval {$t->_Float($min + $min)} ; ok($@, qr/out of range/) ; + + $max = 3.4028235e38 ; + $min = -3.4028235e38 ; + ok($t->_double(undef) == 1) ; + ok($t->_double(0) == 1) ; + ok($t->_double($max - 1) == $max) ; + ok($t->_double("$min") == $min + 1) ; + eval {$t->_double($max + $max)} ; ok($@, qr/out of range/) ; + eval {$t->_double($min + $min)} ; ok($@, qr/out of range/) ; + ok($t->_Double(undef) == 0) ; + ok($t->_Double(0) == 0) ; + ok($t->_Double($max) == $max) ; + ok($t->_Double("$min") == $min) ; + eval {$t->_Double($max + $max)} ; ok($@, qr/out of range/) ; + eval {$t->_Double($min + $min)} ; ok($@, qr/out of range/) ; + + # Number is forced to Double + $max = 3.4028235e38 ; + $min = -3.4028235e38 ; + ok($t->_Number(undef) == 0) ; + ok($t->_Number(0) == 0) ; + ok($t->_Number($max) == $max) ; + ok($t->_Number("$min") == $min) ; + eval {$t->_Number($max + $max)} ; ok($@, qr/out of range/) ; + eval {$t->_Number($min + $min)} ; ok($@, qr/out of range/) ; + + ok(! $t->_boolean(undef)) ; + ok(! $t->_boolean(0)) ; + ok(! $t->_boolean("")) ; + ok($t->_boolean("true")) ; + ok($t->_boolean(1)) ; + ok(! $t->_Boolean(undef)) ; + ok(! $t->_Boolean(0)) ; + ok(! $t->_Boolean("")) ; + ok($t->_Boolean("true")) ; + ok($t->_Boolean(1)) ; + + ok($t->_char(undef), "\0") ; + ok($t->_char(0), "0") ; + ok($t->_char("1"), '1') ; + eval {$t->_char("10")} ; ok($@, qr/Can't convert/) ; + ok($t->_Character(undef), "\0") ; + ok($t->_Character(0), "0") ; + ok($t->_Character("1"), '1') ; + eval {$t->_Character("10")} ; ok($@, qr/Can't convert/) ; + + ok($t->_String(undef), undef) ; + ok($t->_String(0), "0") ; + ok($t->_String("string"), 'string') ; + ok($t->_StringBuffer(undef), undef) ; + ok($t->_StringBuffer(0), "0") ; + ok($t->_StringBuffer("stringbuffer"), 'stringbuffer') ; + + # Test if scalars can pass as java.lang.Object. + # They should be converted to strings. + ok($t->_Object(undef), undef) ; + ok($t->_Object(0), "0") ; + ok($t->_Object(666) == 666) ; + ok($t->_Object("object"), 'object') ; +} + +ok($t->__get_private()->{proto}->ObjectCount(), 1) ; + + + + +__DATA__ __Java__ -class types { - public types(){ +class types2 { + public types2(){ } public byte _byte(byte b){ diff --git a/t/03_objects.t b/t/03_objects.t index ba92536..d89af16 100644 --- a/t/03_objects.t +++ b/t/03_objects.t @@ -10,42 +10,46 @@ use Inline( BEGIN { - plan(tests => 13) ; + plan(tests => 14) ; } # Create some objects -my $t = new types() ; - -my $obj1 = new obj1() ; -eval {my $obj2 = new obj2()} ; ok($@, qr/No public constructor/) ; -my $obj11 = new obj11() ; - -ok($t->_obj1(undef), undef) ; -ok($t->_obj1($obj1)->get_data(), "obj1") ; -ok($t->_obj11($obj11)->get_data(), "obj11") ; -ok($t->_obj1($obj11)->get_data(), "obj11") ; -eval {$t->_int($obj1)} ; ok($@, qr/Can't convert (.*) to primitive int/) ; -eval {$t->_obj11($obj1)} ; ok($@, qr/is not a kind of/) ; - -# Receive an unbound object and send it back -my $unb = $t->get_unbound() ; -ok($t->send_unbound($unb), "al_elem") ; - -# Unexisting method -eval {$t->toto()} ; ok($@, qr/No public method/) ; - -# Method on unbound object -eval {$unb->toto()} ; ok($@, qr/Can't call method/) ; - -# Incompatible prototype, 1 signature -eval {$t->_obj1(5)} ; ok($@, qr/Can't convert/) ; - -# Incompatible prototype, >1 signature -eval {$t->__obj1(5)} ; ok($@, qr/Can't find any signature/) ; +my $t = new types3() ; + +{ + my $obj1 = new obj13() ; + eval {my $obj2 = new obj23()} ; ok($@, qr/No public constructor/) ; + my $obj11 = new obj113() ; + + ok($t->_obj1(undef), undef) ; + ok($t->_obj1($obj1)->get_data(), "obj1") ; + ok($t->_obj11($obj11)->get_data(), "obj11") ; + ok($t->_obj1($obj11)->get_data(), "obj11") ; + eval {$t->_int($obj1)} ; ok($@, qr/Can't convert (.*) to primitive int/) ; + eval {$t->_obj11($obj1)} ; ok($@, qr/is not a kind of/) ; + + # Receive an unbound object and send it back + my $unb = $t->get_unbound() ; + ok($t->send_unbound($unb), "al_elem") ; + + # Unexisting method + eval {$t->toto()} ; ok($@, qr/No public method/) ; + + # Method on unbound object + eval {$unb->toto()} ; ok($@, qr/Can't call method/) ; + + # Incompatible prototype, 1 signature + eval {$t->_obj1(5)} ; ok($@, qr/Can't convert/) ; + + # Incompatible prototype, >1 signature + eval {$t->__obj1(5)} ; ok($@, qr/Can't find any signature/) ; + + # Return a scalar hidden in an object. + ok($t->_olong(), 12345) ; +} -# Return a scalar hidden in an object. -ok($t->_olong(), 12345) ; +ok($t->__get_private()->{proto}->ObjectCount(), 1) ; __END__ @@ -55,10 +59,10 @@ __Java__ import java.util.* ; -class obj1 { +class obj13 { String data = "obj1" ; - public obj1() { + public obj13() { } public String get_data(){ @@ -66,10 +70,10 @@ class obj1 { } } -class obj11 extends obj1 { +class obj113 extends obj13 { String data = "obj11" ; - public obj11() { + public obj113() { } public String get_data(){ @@ -78,10 +82,10 @@ class obj11 extends obj1 { } -class obj2 { +class obj23 { String data = "obj2" ; - obj2() { + obj23() { } public String get_data(){ @@ -90,8 +94,8 @@ class obj2 { } -class types { - public types(){ +class types3 { + public types3(){ } public int _int(int i){ @@ -102,22 +106,22 @@ class types { return o ; } - public obj1 _obj1(obj1 o){ + public obj13 _obj1(obj13 o){ return o ; } - public obj1 __obj1(obj1 o, int i){ + public obj13 __obj1(obj13 o, int i){ return o ; } - public obj1 __obj1(obj1 o){ + public obj13 __obj1(obj13 o){ return o ; } - public obj11 _obj11(obj11 o){ + public obj113 _obj11(obj113 o){ return o ; } diff --git a/t/04_members.t b/t/04_members.t index 20e57e6..aca5725 100644 --- a/t/04_members.t +++ b/t/04_members.t @@ -10,79 +10,83 @@ use Inline( BEGIN { - plan(tests => 27) ; + plan(tests => 28) ; } -my $t = new types() ; - -$t->{_byte} = 123 ; -ok($t->{_byte} == 123) ; -$t->{_Byte} = 123 ; -ok($t->{_Byte} == 123) ; - -$t->{_short} = 123 ; -ok($t->{_short} == 123) ; -$t->{_Short} = 123 ; -ok($t->{_Short} == 123) ; - -$t->{_int} = 123 ; -ok($t->{_int} == 123) ; -$t->{_Integer} = 123 ; -ok($t->{_Integer} == 123) ; - -$t->{_long} = 123 ; -ok($t->{_long} == 123) ; -$t->{_Long} = 123 ; -ok($t->{_Long} == 123) ; - -$t->{_float} = 123.456 ; -ok($t->{_float} == 123.456) ; -$t->{_Float} = 123.456 ; -ok($t->{_Float} == 123.456) ; - -$t->{_double} = 123.456 ; -ok($t->{_double} == 123.456) ; -$t->{_Double} = 123.456 ; -ok($t->{_Double} == 123.456) ; - -$t->{_boolean} = 1 ; -ok($t->{_boolean}) ; -$t->{_Boolean} = 1 ; -ok($t->{_Boolean}) ; - -$t->{_char} = "a" ; -ok($t->{_char}, "a") ; -$t->{_Character} = "a" ; -ok($t->{_Character}, "a") ; - -$t->{_String} = "string" ; -ok($t->{_String}, "string") ; -$t->{_StringBuffer} = "stringbuffer" ; -ok($t->{_StringBuffer}, "stringbuffer") ; - -my $obj1 = new obj1() ; -$t->{_Object} = $obj1 ; -ok($t->{_Object}->get_data(), "obj1") ; -$t->{_Object} = "object" ; -ok($t->{_Object}, "object") ; - -$t->{_Object} = undef ; -ok($t->{_Object}, undef) ; -$t->{_int} = undef ; -ok($t->{_int} == 0) ; - -# Receive an unbound object and try to call a member -my $unb = $t->get_unbound() ; -eval {$unb->{toto} = 1} ; ok($@, qr/Can't set member/) ; -eval {my $a = $unb->{toto}} ; ok($@, qr/Can't get member/) ; - -# Unexisting member -eval {$t->{toto} = 1} ; ok($@, qr/No public member/) ; -eval {my $a = $t->{toto}} ; ok($@, qr/No public member/) ; - -# Incompatible type -eval {$t->{_long} = $obj1} ; ok($@, qr/Can't convert/) ; +my $t = new types4() ; + +{ + $t->{_byte} = 123 ; + ok($t->{_byte} == 123) ; + $t->{_Byte} = 123 ; + ok($t->{_Byte} == 123) ; + + $t->{_short} = 123 ; + ok($t->{_short} == 123) ; + $t->{_Short} = 123 ; + ok($t->{_Short} == 123) ; + + $t->{_int} = 123 ; + ok($t->{_int} == 123) ; + $t->{_Integer} = 123 ; + ok($t->{_Integer} == 123) ; + + $t->{_long} = 123 ; + ok($t->{_long} == 123) ; + $t->{_Long} = 123 ; + ok($t->{_Long} == 123) ; + + $t->{_float} = 123.456 ; + ok($t->{_float} == 123.456) ; + $t->{_Float} = 123.456 ; + ok($t->{_Float} == 123.456) ; + + $t->{_double} = 123.456 ; + ok($t->{_double} == 123.456) ; + $t->{_Double} = 123.456 ; + ok($t->{_Double} == 123.456) ; + + $t->{_boolean} = 1 ; + ok($t->{_boolean}) ; + $t->{_Boolean} = 1 ; + ok($t->{_Boolean}) ; + + $t->{_char} = "a" ; + ok($t->{_char}, "a") ; + $t->{_Character} = "a" ; + ok($t->{_Character}, "a") ; + + $t->{_String} = "string" ; + ok($t->{_String}, "string") ; + $t->{_StringBuffer} = "stringbuffer" ; + ok($t->{_StringBuffer}, "stringbuffer") ; + + my $obj1 = new obj14() ; + $t->{_Object} = $obj1 ; + ok($t->{_Object}->get_data(), "obj1") ; + $t->{_Object} = "object" ; + ok($t->{_Object}, "object") ; + + $t->{_Object} = undef ; + ok($t->{_Object}, undef) ; + $t->{_int} = undef ; + ok($t->{_int} == 0) ; + + # Receive an unbound object and try to call a member + my $unb = $t->get_unbound() ; + eval {$unb->{toto} = 1} ; ok($@, qr/Can't set member/) ; + eval {my $a = $unb->{toto}} ; ok($@, qr/Can't get member/) ; + + # Unexisting member + eval {$t->{toto} = 1} ; ok($@, qr/No public member/) ; + eval {my $a = $t->{toto}} ; ok($@, qr/No public member/) ; + + # Incompatible type + eval {$t->{_long} = $obj1} ; ok($@, qr/Can't convert/) ; +} + +ok($t->__get_private()->{proto}->ObjectCount(), 1) ; __END__ @@ -90,10 +94,10 @@ __Java__ import java.util.* ; -class obj1 { +class obj14 { String data = "obj1" ; - public obj1() { + public obj14() { } public String get_data(){ @@ -102,7 +106,7 @@ class obj1 { } -class types { +class types4 { public byte _byte ; public Byte _Byte ; public short _short ; @@ -123,7 +127,7 @@ class types { public StringBuffer _StringBuffer ; public Object _Object ; - public types(){ + public types4(){ } public ArrayList get_unbound(){ diff --git a/t/05_arrays.t b/t/05_arrays.t index c505017..87c9103 100644 --- a/t/05_arrays.t +++ b/t/05_arrays.t @@ -9,104 +9,134 @@ use Inline( ) ; BEGIN { - plan(tests => 40) ; + plan(tests => 42) ; } -my $t = new types() ; - -ok($t->_byte([12, 34, 56])->[0] == 123) ; -ok($t->_Byte([12, 34, 56])->[1] == 34) ; -ok($t->_short([12, 34, 56])->[0] == 123) ; -ok($t->_Short([12, 34, 56])->[1] == 34) ; -ok($t->_int([12, 34, 56])->[0] == 123) ; -ok($t->_Integer([12, 34, 56])->[1] == 34) ; -ok($t->_long([12, 34, 56])->[0] == 123) ; -ok($t->_Long([12, 34, 56])->[1] == 34) ; -ok($t->_float([12.34, 5.6, 7])->[0] == 123.456) ; -ok($t->_Float([12.34, 5.6, 7])->[1] == 5.6) ; -ok($t->_double([12.34, 5.6, 7])->[0] == 123.456) ; -ok($t->_Double([12.34, 5.6, 7])->[1] == 5.6) ; -ok($t->_boolean([1, 0, "tree"])->[0]) ; -ok(! $t->_Boolean([1, 0])->[1]) ; -ok($t->_char(['a', 'b', 'c'])->[0], "A") ; -ok($t->_Character(['a', 'b', 'c'])->[1], 'b') ; -ok($t->_String(["bla", "ble", "bli"])->[0], "STRING") ; -ok($t->_StringBuffer(["bla", "ble", "bli"])->[0], "STRINGBUFFER") ; - -ok($t->_Object(undef), undef) ; -my $a = $t->_Object([1, "two", $t]) ; -ok($a->[0], "1") ; -ok($a->[1], "two") ; -ok(UNIVERSAL::isa($a->[2], "main::types")) ; -ok($a->[2]->{data}->[1], "a") ; -$a->[2]->{data} = ["1", "2"] ; -ok($a->[2]->{data}->[1], 2) ; - -# Try some multidimensional arrays. -$a = $t->_StringString([ - ["00", "01"], - ["10", "11"] -]) ; -ok($a->[1]->[0], "10") ; - -# Try some incomplete multidimensional arrays. -$a = $t->_StringString([ - [undef, "01", "02"], - [undef, "11"], - undef, -]) ; -ok($a->[1]->[0], undef) ; - - -my $b = $a->[1] ; -ok($t->_String($b)->[0], "STRING") ; - -# Arrays of other arrays -$a = $t->_StringString([ - $a->[0], -]) ; -ok($a->[0]->[2], "02") ; - -# This is one of the things that won't work. -# Try passing an array as an Object. -eval {$t->_o(["a", "b", "c"])} ; ok($@, qr/Can't create Java array/) ; -ok($t->_o(Inline::Java::cast( - "java.lang.Object", - ["a", "b", "c"], - "[Ljava.lang.String;"))->[0], "a") ; -$t->{o} = Inline::Java::cast( - "java.lang.Object", - ["a", "b", "c"], - "[Ljava.lang.String;") ; -ok($t->{o}->[0], "a") ; -$t->{o} = $t->{i} ; -ok($t->{o}->[0], "1") ; - -# Mixed types -eval {$t->_int(["3", "3456", "cat"])} ; ok($@, qr/Can't convert/) ; -ok($t->_Object(["3", "3456", "cat"])->[2], 'cat') ; - -# Badly constructed array -eval {$t->_int(["3", [], "cat"])} ; ok($@, qr/Java array contains mixed types/) ; -eval {$t->_StringString([["3"], "string"])} ; ok($@, qr/Java array contains mixed types/) ; - -# Invalid operations on arrays. -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/) ; +my $t = new types5() ; + +{ + ok($t->_byte([12, 34, 56])->[0] == 123) ; + ok(eq_array($t->_Byte([12, 34, 56]), [12, 34, 56])) ; + ok($t->_short([12, 34, 56])->[0] == 123) ; + ok(eq_array($t->_Short([12, 34, 56]), [12, 34, 56])) ; + ok($t->_int([12, 34, 56])->[0] == 123) ; + ok(eq_array($t->_Integer([12, 34, 56]), [12, 34, 56])) ; + ok($t->_long([12, 34, 56])->[0] == 123) ; + ok(eq_array($t->_Long([12, 34, 56]), [12, 34, 56])) ; + ok($t->_float([12.34, 5.6, 7])->[0] == 123.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] == 123.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)) ; + ok($t->_String(["bla", "ble", "bli"])->[0], "STRING") ; + ok($t->_StringBuffer(["bla", "ble", "bli"])->[0], "STRINGBUFFER") ; + + ok($t->_Object(undef), undef) ; + my $a = $t->_Object([1, "two", $t]) ; + ok($a->[0], "1") ; + ok($a->[1], "two") ; + ok(UNIVERSAL::isa($a->[2], "main::types5")) ; + ok($a->[2]->{data}->[1], "a") ; + $a->[2]->{data} = ["1", "2"] ; + ok($a->[2]->{data}->[1], 2) ; + + # Try some multidimensional arrays. + $a = $t->_StringString([ + ["00", "01"], + ["10", "11"] + ]) ; + ok($a->[1]->[0], "10") ; + + # Try some incomplete multidimensional arrays. + $a = $t->_StringString([ + [undef, "01", "02"], + [undef, "11"], + undef, + ]) ; + ok($a->[1]->[0], undef) ; + + + my $b = $a->[1] ; + ok($t->_String($b)->[0], "STRING") ; + + # Arrays of other arrays + $a = $t->_StringString([ + $a->[0], + ]) ; + ok($a->[0]->[2], "02") ; + + # This is one of the things that won't work. + # Try passing an array as an Object. + eval {$t->_o(["a", "b", "c"])} ; ok($@, qr/Can't create Java array/) ; + ok($t->_o(Inline::Java::cast( + "java.lang.Object", + ["a", "b", "c"], + "[Ljava.lang.String;"))->[0], "a") ; + $t->{o} = Inline::Java::cast( + "java.lang.Object", + ["a", "b", "c"], + "[Ljava.lang.String;") ; + ok($t->{o}->[0], "a") ; + $t->{o} = $t->{i} ; + ok($t->{o}->[0], "1") ; + + # Mixed types + eval {$t->_int(["3", "3456", "cat"])} ; ok($@, qr/Can't convert/) ; + ok($t->_Object(["3", "3456", "cat"])->[2], 'cat') ; + + # Badly constructed array + eval {$t->_int(["3", [], "cat"])} ; ok($@, qr/Java array contains mixed types/) ; + eval {$t->_StringString([["3"], "string"])} ; ok($@, qr/Java array contains mixed types/) ; + + # Invalid operations on arrays. + 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/) ; +} + +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..$#{$a1}){ + if ($eq){ + $ok = ($a1->[$_] eq $a2->[$_]) ; + } + else{ + $ok = ($a1->[$_] == $a2->[$_]) ; + } + last unless $ok ; + } + + return $ok ; +} + __END__ __Java__ -class types { +class types5 { public Object o ; public int i[] = {1, 2, 3} ; public String data[] = {"d", "a", "t", "a"} ; - public types(){ + public types5(){ } public byte[] _byte(byte b[]){ diff --git a/t/06_static.t b/t/06_static.t index 9ffda02..2ce7d11 100644 --- a/t/06_static.t +++ b/t/06_static.t @@ -10,29 +10,43 @@ use Inline( BEGIN { - plan(tests => 7) ; + plan(tests => 10) ; } # Methods -ok(types->get("key"), undef) ; -my $t = new types("key", "value") ; -ok($t->get("key"), "value") ; - -# Members -ok($types::i == 5) ; -$types::i = 7 ; -ok($t->{i} == 7) ; - -my $t2 = new types("key2", "value2") ; -my $hm = $types::hm ; -ok(types->get($hm, "key2"), "value2") ; - -$types::hm = $hm ; -ok($t2->get("key2"), "value2") ; +ok(types6->get("key"), undef) ; +my $t = new types6("key", "value") ; + +{ + ok($t->get("key"), "value") ; + + # Members + ok($types6::i == 5) ; + $types6::i = 7 ; + ok($t->{i} == 7) ; + + my $t2 = new types6("key2", "value2") ; + my $hm = $types6::hm ; + $types6::hm = undef ; + ok(types6->get($hm, "key2"), "value2") ; + + $types6::hm = $hm ; + ok($t2->get("key2"), "value2") ; + + # Calling an instance method without an object reference + eval {types6->set()} ; ok($@, qr/must be called from an object reference/) ; + + # Put in back like before... + $types6::i = 5 ; + ok($types6::i == 5) ; + my $tt = new types6("key", undef) ; + ok($tt->get("key"), undef) ; +} -# Calling an instance method without an object reference -eval {types->set()} ; ok($@, qr/must be called from an object reference/) ; +# Since $types::hm was returned to the Perl space, it was registered in the object +# HashMap. +ok($t->__get_private()->{proto}->ObjectCount(), 2) ; __END__ @@ -43,11 +57,11 @@ __Java__ import java.util.* ; -class types { +class types6 { public static int i = 5 ; public static HashMap hm = new HashMap() ; - public types(String k, String v){ + public types6(String k, String v){ hm.put(k, v) ; } diff --git a/t/07_polymorph.t b/t/07_polymorph.t index 0911270..00c2d6d 100644 --- a/t/07_polymorph.t +++ b/t/07_polymorph.t @@ -12,35 +12,40 @@ use Inline::Java qw(cast) ; BEGIN { - plan(tests => 16) ; + plan(tests => 17) ; } -my $t = new types() ; -my $t1 = new t1() ; - -ok($t->func(5), "int") ; -ok($t->func(cast("char", 5)), "char") ; -ok($t->func(55), "int") ; -ok($t->func("str"), "string") ; -ok($t->func(cast("java.lang.StringBuffer", "str")), "stringbuffer") ; - -ok($t->f($t->{hm}), "hashmap") ; -ok($t->f(cast("java.lang.Object", $t->{hm})), "object") ; - -ok($t->f(["a", "b", "c"]), "string[]") ; - -ok($t->f(["12.34", "45.67"]), "double[]") ; -ok($t->f(cast("java.lang.Object", ['a'], "[Ljava.lang.String;")), "object") ; - -eval {$t->func($t1)} ; ok($@, qr/Can't find any signature/) ; -eval {$t->func(cast("int", $t1))} ; ok($@, qr/Can't convert (.*) to primitive int/) ; +my $t = new types7() ; + +{ + my $t1 = new t17() ; + + ok($t->func(5), "int") ; + ok($t->func(cast("char", 5)), "char") ; + ok($t->func(55), "int") ; + ok($t->func("str"), "string") ; + ok($t->func(cast("java.lang.StringBuffer", "str")), "stringbuffer") ; + + ok($t->f($t->{hm}), "hashmap") ; + ok($t->f(cast("java.lang.Object", $t->{hm})), "object") ; + + ok($t->f(["a", "b", "c"]), "string[]") ; + + ok($t->f(["12.34", "45.67"]), "double[]") ; + ok($t->f(cast("java.lang.Object", ['a'], "[Ljava.lang.String;")), "object") ; + + eval {$t->func($t1)} ; ok($@, qr/Can't find any signature/) ; + eval {$t->func(cast("int", $t1))} ; ok($@, qr/Can't convert (.*) to primitive int/) ; + + my $t2 = new t27() ; + ok($t2->f($t2), "t1") ; + ok($t1->f($t2), "t1") ; + ok($t2->f($t1), "t2") ; + ok($t2->f(cast("t17", $t2)), "t2") ; +} -my $t2 = new t2() ; -ok($t2->f($t2), "t1") ; -ok($t1->f($t2), "t1") ; -ok($t2->f($t1), "t2") ; -ok($t2->f(cast("t1", $t2)), "t2") ; +ok($t->__get_private()->{proto}->ObjectCount(), 1) ; __END__ @@ -50,30 +55,30 @@ __Java__ import java.util.* ; -class t1 { - public t1(){ +class t17 { + public t17(){ } - public String f(t2 o){ + public String f(t27 o){ return "t1" ; } } -class t2 extends t1 { - public t2(){ +class t27 extends t17 { + public t27(){ } - public String f(t1 o){ + public String f(t17 o){ return "t2" ; } } -class types { +class types7 { public HashMap hm = new HashMap() ; - public types(){ + public types7(){ } public String func(String o){ diff --git a/t/08_study.t b/t/08_study.t index 6f7b6a0..e4365aa 100644 --- a/t/08_study.t +++ b/t/08_study.t @@ -17,28 +17,32 @@ use Inline::Java qw(study_classes) ; BEGIN { - plan(tests => 8) ; + plan(tests => 9) ; } - study_classes([ 't.types', 't.no_const' ]) ; my $t = new study::t::types() ; -ok($t->func(), "study") ; -ok($t->hm()->get("key"), "value") ; -my $nc = new study::t::no_const() ; -ok($nc->{i}, 5) ; +{ + ok($t->func(), "study") ; + ok($t->hm()->get("key"), "value") ; + + my $nc = new study::t::no_const() ; + ok($nc->{i}, 5) ; + + my $a = new study::a8() ; + ok($a->{i}, 50) ; + ok($a->truth()) ; + ok($a->sa()->[1], 'titi') ; + ok($a->sb()->[0]->get('toto'), 'titi') ; + ok($a->sb()->[1]->get('error'), undef) ; +} -my $a = new study::a() ; -ok($a->{i}, 50) ; -ok($a->truth()) ; -ok($a->sa()->[1], 'titi') ; -ok($a->sb()->[0]->get('toto'), 'titi') ; -ok($a->sb()->[1]->get('error'), undef) ; +ok($t->__get_private()->{proto}->ObjectCount(), 1) ; __DATA__ @@ -47,10 +51,10 @@ __Java__ import java.util.* ; -class a { +class a8 { public int i = 50 ; - public a(){ + public a8(){ } public boolean truth(){ -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libinline-java-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits