Archive-ByteBoozer
view release on metacpan or search on metacpan
t/02-param-check.t view on Meta::CPAN
#########################
use Archive::ByteBoozer qw(:crunch);
use Capture::Tiny qw(capture_stderr);
use IO::Scalar;
use Test::Deep;
use Test::Exception;
use Test::More tests => 25;
#########################
{
my %params = ();
throws_ok(
sub { crunch(%params) },
qr/source.*target|target.*source/,
'mandatory source and target parameters missing',
);
}
#########################
{
my $io = new IO::Handle;
my %params = (source => $io);
throws_ok(
sub { crunch(%params) },
qr/target/,
'mandatory target parameter missing',
);
}
#########################
{
my $io = new IO::Handle;
my %params = (target => $io);
throws_ok(
sub { crunch(%params) },
qr/source/,
'mandatory source parameter missing',
);
}
#########################
{
my $in = new IO::Handle;
my $out = new IO::Handle;
my %params = (source => $in, target => $out, dummy => 'parameter');
throws_ok(
sub { crunch(%params) },
qr/dummy/,
'parameter not listed in the validation options',
);
}
#########################
{
my $io = new IO::Handle;
my %params = (source => $io, target => $io);
throws_ok(
sub { crunch(%params) },
qr/is_not_the_same_as_source|is_not_the_same_as_target/,
'source and target parameters point to the same object',
);
}
#########################
{
my $in = new IO::Handle;
my $out = new IO::Handle;
my $start_address = '0xz0c00';
my %params = (source => $in, target => $out, attach_decruncher => $start_address);
throws_ok(
sub { crunch(%params) },
qr/is_valid_memory_address/,
'invalid start address of the attached decruncher',
);
}
#########################
{
my $in = new IO::Handle;
my $out = new IO::Handle;
my $start_address = -1;
my %params = (source => $in, target => $out, attach_decruncher => $start_address);
throws_ok(
sub { crunch(%params) },
qr/is_valid_memory_address/,
'negative start address of the attached decruncher',
);
}
#########################
{
my $in = new IO::Handle;
my $out = new IO::Handle;
my $start_address = 0x10000;
my %params = (source => $in, target => $out, attach_decruncher => $start_address);
throws_ok(
sub { crunch(%params) },
qr/is_valid_memory_address/,
'exceeding start address of the attached decruncher',
);
}
#########################
{
my $in = new IO::Handle;
my $out = new IO::Handle;
my $initial_address = '0xz0c00';
my %params = (source => $in, target => $out, precede_initial_address => $initial_address);
throws_ok(
sub { crunch(%params) },
qr/is_valid_memory_address/,
'invalid initial address to precede data',
);
}
#########################
{
my $in = new IO::Handle;
my $out = new IO::Handle;
my $initial_address = -1;
my %params = (source => $in, target => $out, precede_initial_address => $initial_address);
throws_ok(
sub { crunch(%params) },
qr/is_valid_memory_address/,
( run in 0.711 second using v1.01-cache-2.11-cpan-39bf76dae61 )