App-Muter
view release on metacpan or search on metacpan
test_run_pattern('base32hex', 'foobar', 'CPNMUOJ1E8======', 'b32hex pattern 6');
# Test cases from the ascii85 Ruby gem.
test_run_pattern('ascii85', '', '', 'empty ascii85 pattern');
test_run_pattern('ascii85', ' ', '<~+9~>', 'ascii85 pattern 1');
test_run_pattern('ascii85', "\0", '<~!!~>', 'ascii85 pattern 2');
test_run_pattern('ascii85', "\0" x 2, '<~!!!~>', 'ascii85 pattern 3');
test_run_pattern('ascii85', "\0" x 3, '<~!!!!~>', 'ascii85 pattern 4');
test_run_pattern('ascii85', "\0" x 4, '<~z~>', 'ascii85 pattern 5');
test_run_pattern('ascii85', "\0" x 5, '<~z!!~>', 'ascii85 pattern 6');
test_run_pattern('ascii85', "A\0\0\0\0", '<~5l^lb!!~>', 'ascii85 pattern 7');
test_run_pattern('ascii85', "A", '<~5l~>', 'ascii85 pattern 8');
test_run_pattern('ascii85', "AB", '<~5sb~>', 'ascii85 pattern 9');
test_run_pattern('ascii85', "ABC", '<~5sdp~>', 'ascii85 pattern 10');
test_run_pattern('ascii85', "ABCD", '<~5sdq,~>', 'ascii85 pattern 11');
test_run_pattern('ascii85', "ABCDE", '<~5sdq,70~>', 'ascii85 pattern 12');
test_run_pattern('ascii85', "ABCDEF", '<~5sdq,77I~>', 'ascii85 pattern 13');
test_run_pattern('ascii85', "ABCDEFG", '<~5sdq,77Kc~>', 'ascii85 pattern 14');
test_run_pattern('ascii85', "ABCDEFGH", '<~5sdq,77Kd<~>', 'ascii85 pattern 15');
test_run_pattern('ascii85', "ABCDEFGHI", '<~5sdq,77Kd<8H~>',
'ascii85 pattern 16');
test_run_pattern('ascii85', "Ascii85", '<~6$$OMBfIs~>', 'ascii85 pattern 17');
test_run_pattern(
'ascii85',
'Antidisestablishmentarianism' =>
'<~6#LdYA8-*rF*(i"Ch[s(D.RU,@<-\'jDJ=0/~>',
'ascii85 pattern 18'
);
test_run_pattern('uuencode', "Cat", "#0V%T\n`\n", "uuencode pattern 1");
test_run_pattern(
'uuencode',
"http://www.wikipedia.org\r\n",
"::'1T<#HO+W=W=RYW:6MI<&5D:6\$N;W)G#0H`\n`\n",
"uuencode pattern 2"
);
test_run_pattern(
'xml',
q{"Hello, ol' New Jersey! <:>"},
'"Hello, ol' New Jersey! <:>"',
'xml pattern 1'
);
test_run_pattern(
'xml(hex)',
q{"Hello, ol' New Jersey! <:>"},
'"Hello, ol' New Jersey! <:>"',
'xml pattern 2'
);
test_run_pattern(
'xml(html)',
q{"Hello, ol' New Jersey! <:>"},
'"Hello, ol' New Jersey! <:>"',
'xml pattern 3'
);
test_run_chain('xml(hex)', '&abc', '&abc', 'xml pattern 4');
test_run_chain('xml,hex', '&abc', '&abc',
'xml pattern 4 (without parentheses)');
test_run_chain('-xml', '©', '©', 'xml decode hex');
test_run_chain('-xml', '', "\xef\xbb\xbf", 'xml decode hex BOM');
test_run_chain('-hex:base64', '00413780', 'AEE3gA==', 'simple chain');
test_run_chain(
'-hex:hash(sha256):url64',
'616263',
'ungWv48Bz-pBQUDeXa4iI7ADYaOWF3qctBD_YfIAFa0',
'simple chain with consuming filter'
);
test_run_chain(
'-hex:hash,sha256:url64',
'616263',
'ungWv48Bz-pBQUDeXa4iI7ADYaOWF3qctBD_YfIAFa0',
'simple chain with no parentheses'
);
Test::NoWarnings::had_no_warnings() if $INC{'Test/NoWarnings.pm'};
done_testing;
sub test_run_pattern {
my ($chain, $input, $output, $desc) = @_;
subtest $desc => sub {
test_run_chain($chain, $input, $output, "$desc (encoding)");
test_run_chain("-$chain", $output, $input, "$desc (decoding)");
};
return;
}
sub test_run_chain {
my ($chain, $input, $output, $desc) = @_;
subtest $desc => sub {
is(run_chain($chain, $input, 1), $output, "$desc (1-byte chunks)");
is(run_chain($chain, $input, 2), $output, "$desc (2-byte chunks)");
is(run_chain($chain, $input, 3), $output, "$desc (3-byte chunks)");
is(run_chain($chain, $input, 4), $output, "$desc (4-byte chunks)");
is(run_chain($chain, $input, 16), $output, "$desc (16-byte chunks)");
is(run_chain($chain, $input, 512), $output, "$desc (512-byte chunks)");
is(App::Muter::Interface::process($chain, $input),
$output, "$desc (one-shot)");
};
return;
}
sub run_chain {
my ($chain, $input, $blocksize) = @_;
my $output = '';
my $ifh = IO::Scalar->new(\$input);
my $ofh = IO::Scalar->new(\$output);
App::Muter::Main::run_chain($chain, 0, [$ifh], $ofh, $blocksize);
return $output;
}
( run in 0.602 second using v1.01-cache-2.11-cpan-d7f47b0818f )