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 )