aboutsummaryrefslogtreecommitdiffstats
path: root/libtests/qtest/base64.test
blob: 9e709c73b74045d7947a0c57f96196bf44d395b9 (plain) (blame)
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');
}