File: base64.test

package info (click to toggle)
qpdf 12.3.2-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 72,660 kB
  • sloc: cpp: 59,054; perl: 12,189; ansic: 6,809; sh: 1,231; python: 1,041; xml: 43; makefile: 42
file content (58 lines) | stat: -rw-r--r-- 1,801 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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');
}