Archive-ByteBoozer

 view release on metacpan or  search on metacpan

lib/Archive/ByteBoozer.pm  view on Meta::CPAN

    my @memory_address = _memory_address_bytes($replace_initial_address);
    substr $params->{_source_data}, 0, 2, join '', @memory_address;
    return;
}

sub crunch {
    my $params = { @_ };
    validate(
        @_, {
            source                  => { type => HANDLE, isa => 'IO::Handle', callbacks => {
                is_not_the_same_as_target => sub { exists $_[1]->{target} && refaddr $_[0] != refaddr $_[1]->{target} },
            } },
            target                  => { type => HANDLE, isa => 'IO::Handle', callbacks => {
                is_not_the_same_as_source => sub { exists $_[1]->{source} && refaddr $_[0] != refaddr $_[1]->{source} },
            } },
            attach_decruncher       => { type => SCALAR, optional => 1, callbacks => {
                is_valid_memory_address   => sub { looks_like_number $_[0] && $_[0] >= 0x0000 && $_[0] <= 0xffff },
            } },
            make_executable         => { type => SCALAR, optional => 1, callbacks => {
                is_valid_memory_address   => sub { looks_like_number $_[0] && $_[0] >= 0x0000 && $_[0] <= 0xffff },
            } },
            precede_initial_address => { type => SCALAR, optional => 1, callbacks => {
                is_valid_memory_address   => sub { looks_like_number $_[0] && $_[0] >= 0x0000 && $_[0] <= 0xffff },
            } },

t/02-param-check.t  view on Meta::CPAN

        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(



( run in 0.304 second using v1.01-cache-2.11-cpan-4d4bc49f3ae )