Data-Bitfield
view release on metacpan or search on metacpan
t/03enumfield.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use Test::Fatal;
use Data::Bitfield qw( bitfield enumfield );
{
bitfield { format => "bytes-LE" }, BYTES =>
first => enumfield(0, qw( false true )),
second => enumfield(2, qw( zero one two three ));
is( sprintf( "%v02x", pack_BYTES( first => "true", second => "two" ) ), "09",
'pack_BYTES' );
is_deeply( { unpack_BYTES( "\x09" ) }, { first => "true", second => "two" },
'unpack_BYTES' );
}
is( exception {
bitfield ANOTHER =>
zero => enumfield(0, qw( z Z )),
one => enumfield(1, qw( o O )),
two => enumfield(2, qw( t T ));
three => enumfield(3, qw( th Th TH )),
}, undef,
'Non-overlapping enums' );
ok( exception { pack_BYTES( first => "hello" ) },
'Unrecognised enum value dies' );
done_testing;
( run in 2.119 seconds using v1.01-cache-2.11-cpan-54e63673c56 )