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 )