From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!perl
subtest 'empty args' => sub {
my $error;
isa_ok(
( $error = dies { Data::Record::Serialize->new } ),
['Data::Record::Serialize::Error::attribute::value'],
'error class',
);
like( $error->msg, qr/<encode>/, "error mesage" );
};
subtest 'bad types' => sub {
for my $type (
[ scalar => 1 ],
[ 'hash; illegal type', { foo => 'Q' }, ],
[ 'array; illegal type', [ foo => 'N', bar => 'Q' ] ],
)
{
my ( $label, $type ) = @$type;
subtest $label => sub {
my $error = dies { Data::Record::Serialize->new( encode => 'null', types => $type ) };
isa_ok( $error, ['Error::TypeTiny::Assertion'], 'error class' );
is( $error->attribute_name, 'types', "attribute name" );
};
}
};
subtest "encode includes sink ; don't specify sink" => sub {
my $error;
isa_ok( (
$error = dies {
Data::Record::Serialize->new(
encode => '+My::Test::Encode::both',
sink => 'stream'
)
}
),
['Data::Record::Serialize::Error::attribute::value'],
'error class',
);
like( $error, qr/don't specify a sink/, "error message" );
};
ok(
lives {
Data::Record::Serialize->new(
encode => 'ddump',
sink => 'stream'
);
},
'encode + sink'
) or diag $@;
ok(
lives {
Data::Record::Serialize->new( encode => 'ddump' );
},
'encode + default sink'
) or diag $@;
done_testing;