Ticket #75: interp_test.diff

File interp_test.diff, 1.5 KB (added by cotto, 4 years ago)

updated version of szabgab's patch

  • ext/Parrot-Embed/t/interp.t

     
    66use strict; 
    77use warnings; 
    88 
    9 use Test::More tests => 23; 
     9use Test::More tests => 28; 
    1010use File::Spec; 
    1111 
    1212my $hello_pbc = File::Spec->catfile( 't', 'greet.pbc' ); 
     
    4646 
    4747can_ok( $global_greet, 'invoke' ); 
    4848my $pmc = $global_greet->invoke( 'S->P', 'Bob' ); 
     49isa_ok( $pmc, 'Parrot::PMC' ); 
    4950ok( $pmc, 'invoke() should return a PMC, given that signature' ); 
    5051 
    5152is( $pmc->get_string(), 'Hello, Bob!', '... containing a string returned in the PMC' ); 
     
    101102    '... even if interpreter object has gone out of scope' 
    102103); 
    103104 
     105{ 
     106    my $add = $interp->compile( <<'END_CODE' ); 
     107.sub my_add 
     108    .param string a 
     109    .param string b 
     110 
     111    .return( a ) 
     112.end 
     113END_CODE 
     114 
     115    ok( $add, 'compile() should compile PIR code and return a PMC' ); 
     116    isa_ok( $add, 'Parrot::PMC' );   
     117    my $pmc_add; 
     118    eval { 
     119        $pmc_add = $add->invoke( 'PS', 23, 19 ); 
     120    }; 
     121    #Usage: Parrot::PMC::invoke(pmc, signature, argument) 
     122    TODO: { 
     123        local $TODO = 'invoke() can only get 2 parameters'; 
     124        isa_ok( $pmc_add, 'Parrot::PMC' ); 
     125    } 
     126    SKIP: { 
     127        skip "Previous TODO returns undef", 1; 
     128        is($pmc_add->get_string(), 42, 'two param call works well'); 
     129    } 
     130} 
     131 
     132 
    104133# Local Variables: 
    105134#   mode: cperl 
    106135#   cperl-indent-level: 4