mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 19:08:59 +00:00
3d9bac43da
Bidirectional base64; will be used by JSON v2.
59 lines
1.8 KiB
Perl
59 lines
1.8 KiB
Perl
#!/usr/bin/env perl
|
|
require 5.008;
|
|
use warnings;
|
|
use strict;
|
|
|
|
chdir("base64") or die "chdir testdir failed: $!\n";
|
|
|
|
require TestDriver;
|
|
|
|
my $td = new TestDriver('base64');
|
|
|
|
cleanup();
|
|
|
|
# ** Do not use normalize newlines on these tests. **
|
|
|
|
my $n = 5;
|
|
for (my $i = 1; $i <= $n; ++$i)
|
|
{
|
|
$td->runtest("encode $i",
|
|
{$td->COMMAND => "base64 encode < $i.dec"},
|
|
{$td->FILE => "$i.enc", $td->EXIT_STATUS => 0});
|
|
$td->runtest("code $i",
|
|
{$td->COMMAND => "base64 decode < $i.enc"},
|
|
{$td->FILE => "$i.dec", $td->EXIT_STATUS => 0});
|
|
}
|
|
|
|
$td->runtest("non-zero discard bits",
|
|
{$td->COMMAND => "echo c2FsYWR= | base64 decode"},
|
|
{$td->STRING => "salad", $td->EXIT_STATUS => 0});
|
|
$td->runtest("write with +/",
|
|
{$td->COMMAND => "echo +/== | base64 decode > a"},
|
|
{$td->STRING => "", $td->EXIT_STATUS => 0});
|
|
$td->runtest("write with -_",
|
|
{$td->COMMAND => "echo -_== | base64 decode > b"},
|
|
{$td->STRING => "", $td->EXIT_STATUS => 0});
|
|
$td->runtest("interchangeability of +/ and -_",
|
|
{$td->FILE => "a"},
|
|
{$td->FILE => "b"});
|
|
|
|
$td->runtest("invalid characters",
|
|
{$td->COMMAND => "echo aaaaa! | base64 decode"},
|
|
{$td->REGEXP => ".*invalid input.*", $td->EXIT_STATUS => 2});
|
|
$td->runtest("invalid pad",
|
|
{$td->COMMAND => "echo a= | base64 decode"},
|
|
{$td->REGEXP => ".*invalid input.*", $td->EXIT_STATUS => 2});
|
|
$td->runtest("data after pad",
|
|
{$td->COMMAND => "echo aa==potato | base64 decode"},
|
|
{$td->REGEXP => ".*data follows pad characters.*",
|
|
$td->EXIT_STATUS => 2});
|
|
|
|
cleanup();
|
|
|
|
$td->report(7 + (2 * $n));
|
|
|
|
sub cleanup
|
|
{
|
|
unlink('a', 'b');
|
|
}
|