2 if ($ENV{'PERL_CORE'}){
13 print "# Testing MIME::Base64-", $MIME::Base64::VERSION, "\n";
16 if (ord('A') == 0x41) {
17 *ASCII = sub { return $_[0] };
21 *ASCII = sub { Encode::encode('ascii',$_[0]) };
26 # instead of "for my $test (...)" , which is my preference.
27 # Not sure which perl version has started supporting. MIME::Base64
28 # was supposed to work with very old perl5, right?
34 # This used to generate a warning
35 print "not " unless decode_base64(encode_base64("foo")) eq "foo";
36 print "ok ", $testno++, "\n";
40 print "# encode test\n";
301 ["\000\377" => "AP8="],
302 ["\377\000" => "/wA="],
303 ["\000\000\000" => "AAAA"],
306 [ASCII('a') => 'YQ=='],
307 [ASCII('aa') => 'YWE='],
308 [ASCII('aaa') => 'YWFh'],
310 [ASCII('aaa') => 'YWFh'],
311 [ASCII('aaa') => 'YWFh'],
312 [ASCII('aaa') => 'YWFh'],
316 [ASCII('Aladdin:open sesame') => 'QWxhZGRpbjpvcGVuIHNlc2FtZQ=='],
318 [ASCII('a') x 100 => 'YWFh' x 33 . 'YQ=='],
320 [ASCII('Multipurpose Internet Mail Extensions: The Base64 Content-Transfer-Encoding is designed to represent sequences of octets in a form that is not humanly readable. ')
321 => "TXVsdGlwdXJwb3NlIEludGVybmV0IE1haWwgRXh0ZW5zaW9uczogVGhlIEJhc2U2NCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIGlzIGRlc2lnbmVkIHRvIHJlcHJlc2VudCBzZXF1ZW5jZXMgb2Ygb2N0ZXRzIGluIGEgZm9ybSB0aGF0IGlzIG5vdCBodW1hbmx5IHJlYWRhYmxlLiA="],
325 for $test (@encode_tests) {
326 my($plain, $expected) = ($$test[0], $$test[1]);
328 my $encoded = encode_base64($plain, '');
329 if ($encoded ne $expected) {
330 print "test $testno ($plain): expected $expected, got $encoded\n";
333 my $decoded = decode_base64($encoded);
334 if ($decoded ne $plain) {
335 print "test $testno ($encoded): expected $plain, got $decoded\n";
339 print "ok $testno\n";
346 print "# decode test\n";
348 local $SIG{__WARN__} = sub { print $_[0] }; # avoid warnings on stderr
351 ['YWE=' => ASCII('aa')],
352 [' YWE=' => ASCII('aa')],
353 ['Y WE=' => ASCII('aa')],
354 ['YWE= ' => ASCII('aa')],
355 ["Y\nW\r\nE=" => ASCII('aa')],
357 # These will generate some warnings
358 ['YWE=====' => ASCII('aa')], # extra padding
359 ['YWE' => ASCII('aa')], # missing padding
360 ['YWFh====' => ASCII('aaa')],
361 ['YQ' => ASCII('a')],
368 for $test (@decode_tests) {
369 my($encoded, $expected) = ($$test[0], $$test[1]);
371 my $decoded = decode_base64($encoded);
372 if ($decoded ne $expected) {
373 die "test $testno ($encoded): expected $expected, got $decoded\n";
375 print "ok $testno\n";