ExtUtils-H2PM
view release on metacpan or search on metacpan
t/04structure-constant.t view on Meta::CPAN
#!/usr/bin/perl
use v5.14;
use warnings;
use Test::More;
use ExtUtils::H2PM;
my $code;
$code = do {
module "TEST";
include "t/test.h", local => 1;
constant "ENUMERATED_CONSTANT";
structure "struct idname",
members => [
id => member_constant("ENUMERATED_CONSTANT"),
name => member_strarray,
];
gen_output;
};
my $FILE = __FILE__;
is_deeply( [ split m/\n/, $code ],
[ split m/\n/, <<"EOPERL" ],
package TEST;
# This module was generated automatically by ExtUtils::H2PM from $FILE
use Carp;
push \@EXPORT_OK, 'ENUMERATED_CONSTANT', 'pack_idname', 'unpack_idname';
use constant ENUMERATED_CONSTANT => 20;
sub pack_idname
{
\@_ == 1 or croak "usage: pack_idname(name)";
my \@v = \@_;
splice \@v, 0, 0, ENUMERATED_CONSTANT;
pack "l Z12 ", \@v;
}
sub unpack_idname
{
length \$_[0] == 16 or croak "unpack_idname: expected 16 bytes, got " . length \$_[0];
my \@v = unpack "l Z12 ", \$_[0];
splice( \@v, 0, 1 ) == ENUMERATED_CONSTANT or croak "expected id == ENUMERATED_CONSTANT";
\@v;
}
1;
EOPERL
'Simple structure with a constant' );
done_testing;
( run in 0.615 second using v1.01-cache-2.11-cpan-71847e10f99 )