Alien-Serd

 view release on metacpan or  search on metacpan

t/alien_serd.t  view on Meta::CPAN

use Test2::V0;
use Test::Alien;
use Test::Alien::Diag;
use Alien::Serd;
use File::Which;

alien_diag 'Alien::Serd';
alien_ok 'Alien::Serd';

if( which 'serdi' ) {
  run_ok([ qw(serdi -v) ])
    ->success
    ->out_like(qr/serdi\s+([0-9.]+)/);
}

my $xs = <<'END';
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "serd/serd.h"

bool wrap_serd_uri_string_has_scheme( const char* class, const uint8_t *utf8) {
  return serd_uri_string_has_scheme(utf8);
}

MODULE = main PACKAGE = main

bool wrap_serd_uri_string_has_scheme(class, utf8)
  const char* class
  const char* utf8

END
xs_ok $xs, with_subtest {
  my ($module) = @_;
  ok !! $module->wrap_serd_uri_string_has_scheme("http://example.com"), 'has scheme';
  ok ! $module->wrap_serd_uri_string_has_scheme("example.com"), 'no scheme';
};

ffi_ok { symbols => [ 'serd_uri_string_has_scheme' ] }, with_subtest {
  my $ffi = shift;
  my $serd_uri_string_has_scheme = $ffi->function( serd_uri_string_has_scheme => ['string'] => 'bool' );

  ok !! $serd_uri_string_has_scheme->("http://example.com"), 'has scheme';
  ok ! $serd_uri_string_has_scheme->("example.com"), 'no scheme';

};

done_testing;



( run in 0.881 second using v1.01-cache-2.11-cpan-d0baa829c65 )