Alien-Base-Dino

 view release on metacpan or  search on metacpan

t/alien_base_dino.t  view on Meta::CPAN

};


subtest 'use xs' => sub {

  xs_ok { xs => do { local $/; <DATA> }, verbose => 1 }, with_subtest {
    my($mod) = @_;
    is($mod->is_palindrome("Something that is not a palindrome"), 0);
    is($mod->is_palindrome("Was it a car or a cat I saw?"), 1);
  };
};

subtest 'use ffi' => sub {

  ffi_ok { symbols => ['is_palindrome'] }, with_subtest {
    my ($ffi) = @_;
  
    my $is_palindrome = $ffi->function(is_palindrome => ['string'] => 'int');
  
    is($is_palindrome->("Something that is not a palindrome"), 0);
    is($is_palindrome->("Was it a car or a cat I saw?"), 1);
  };
};

subtest 'use exe' => sub {

  local $ENV{PATH} = $ENV{PATH};

  unshift @PATH, $alien->bin_dir;

  run_ok(['palx', 'Something that is not a palindrome'])
    ->note
    ->exit_is(2);

  run_ok(['palx', 'Was it a car or a cat I saw?'])
    ->note
    ->success;

  run_ok(['palx', 'racecar'])
    ->note
    ->success;

};

done_testing

__DATA__
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include <libpalindrome.h>

MODULE = TA_MODULE PACKAGE = TA_MODULE

int
is_palindrome(klass, word)
    const char *klass
    const char *word
  CODE:
    RETVAL = is_palindrome(word);
  OUTPUT:
    RETVAL



( run in 0.527 second using v1.01-cache-2.11-cpan-13bb782fe5a )