1# mix procedural subroutine and object-oriented method 2use strict; 3use warnings; 4use Test::More tests => 5; 5 6# this is needed to avoid false passes if was done first without 'info' 7use Inline CPP => config => force_build => 1, clean_after_build => 0; 8 9use Inline (CPP => 'DATA', classes => sub { join('::', split('__', shift)); } ); # AUTOMATIC 10#use Inline (CPP => 'DATA', classes => { 'Inline__Test__Inline_CPP_Debug' => 'Inline::Test::Inline_CPP_Debug'} ); # MANUAL 11 12can_ok 'Inline::Test::Inline_CPP_Debug', 'new'; 13my $my_object = new_ok 'Inline::Test::Inline_CPP_Debug'; 14is ref($my_object), 'Inline::Test::Inline_CPP_Debug', 'Our "Inline__Test__Inline_CPP_Debug" is a "Inline::Test::Inline_CPP_Debug"'; 15is $my_object->my_method(), 'RETVAL FROM my_subroutine()', 'Proper object method association from Inline::Test::Inline_CPP_Debug.'; 16is my_subroutine(), 'RETVAL FROM my_subroutine()', 'Proper subroutine association.'; 17 18done_testing(); 19 20__DATA__ 21__CPP__ 22 23SV* my_subroutine() { return(newSVpv("RETVAL FROM my_subroutine()", 27)); } 24 25class Inline__Test__Inline_CPP_Debug 26{ 27public: 28 SV* my_method() { return my_subroutine(); } 29 Inline__Test__Inline_CPP_Debug() {} 30 ~Inline__Test__Inline_CPP_Debug() {} 31}; 32