1#!perl -w
2
3use strict;
4use warnings;
5use Test qw(plan ok);
6
7plan tests => 129;
8
9use MIME::Base64 qw(encode_base64 encoded_base64_length decoded_base64_length);
10*elen = *encoded_base64_length;
11*dlen = *decoded_base64_length;
12
13ok(elen(""), 0);
14ok(elen("a"), 5);
15ok(elen("aa"), 5);
16ok(elen("aaa"), 5);
17ok(elen("aaaa"), 9);
18ok(elen("aaaaa"), 9);
19
20ok(elen("", ""), 0);
21ok(elen("a", ""), 4);
22ok(elen("aa", ""), 4);
23ok(elen("aaa", ""), 4);
24ok(elen("aaaa", ""), 8);
25ok(elen("aaaaa", ""), 8);
26
27ok(dlen(""), 0);
28ok(dlen("a"), 0);
29ok(dlen("aa"), 1);
30ok(dlen("aaa"), 2);
31ok(dlen("aaaa"), 3);
32ok(dlen("aaaaa"), 3);
33ok(dlen("aaaaaa"), 4);
34ok(dlen("aaaaaaa"), 5);
35ok(dlen("aaaaaaaa"), 6);
36
37ok(dlen("=aaaa"), 0);
38ok(dlen("a=aaa"), 0);
39ok(dlen("aa=aa"), 1);
40ok(dlen("aaa=a"), 2);
41ok(dlen("aaaa="), 3);
42
43ok(dlen("a\na\na a"), 3);
44
45for my $i (50..100) {
46    my $a = "a" x $i;
47    my $a_enc = encode_base64($a);
48    ok(elen($a), length($a_enc));
49    ok(dlen($a_enc), $i);
50}
51