10 print "# Testing MIME::Base64-", $MIME::Base64::VERSION, "\n";
14 *ASCII = sub { return $_[0] };
18 *ASCII = sub { Encode::encode('ascii',$_[0]) };
27 # This used to generate a warning
28 print "not " unless decode_base64(encode_base64("foo")) eq "foo";
29 print "ok ", $testno++, "\n";
33 print "# encode test\n";
294 ["\000\377" => "AP8="],
295 ["\377\000" => "/wA="],
296 ["\000\000\000" => "AAAA"],
299 [ASCII('a') => 'YQ=='],
300 [ASCII('aa') => 'YWE='],
301 [ASCII('aaa') => 'YWFh'],
303 [ASCII('aaa') => 'YWFh'],
304 [ASCII('aaa') => 'YWFh'],
305 [ASCII('aaa') => 'YWFh'],
309 [ASCII('Aladdin:open sesame') => 'QWxhZGRpbjpvcGVuIHNlc2FtZQ=='],
311 [ASCII('a') x 100 => 'YWFh' x 33 . 'YQ=='],
313 [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. ')
314 => "TXVsdGlwdXJwb3NlIEludGVybmV0IE1haWwgRXh0ZW5zaW9uczogVGhlIEJhc2U2NCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIGlzIGRlc2lnbmVkIHRvIHJlcHJlc2VudCBzZXF1ZW5jZXMgb2Ygb2N0ZXRzIGluIGEgZm9ybSB0aGF0IGlzIG5vdCBodW1hbmx5IHJlYWRhYmxlLiA="],
318 for $test (@encode_tests) {
319 my($plain, $expected) = ($$test[0], $$test[1]);
321 my $encoded = encode_base64($plain, '');
322 if ($encoded ne $expected) {
323 print "test $testno ($plain): expected $expected, got $encoded\n";
326 my $decoded = decode_base64($encoded);
327 if ($decoded ne $plain) {
328 print "test $testno ($encoded): expected $plain, got $decoded\n";
332 if (ord('A') != 193) { # perl versions broken on EBCDIC
333 # Try the old Perl versions too
334 if ($encoded ne MIME::Base64::old_encode_base64($plain, '')) {
335 print "old_encode_base64 give different result.\n";
338 if ($plain ne MIME::Base64::old_decode_base64($encoded)) {
339 print "old_decode_base64 give different result.\n";
344 print "ok $testno\n";
351 print "# decode test\n";
353 local $SIG{__WARN__} = sub { print $_[0] }; # avoid warnings on stderr
356 ['YWE=' => ASCII('aa')],
357 [' YWE=' => ASCII('aa')],
358 ['Y WE=' => ASCII('aa')],
359 ['YWE= ' => ASCII('aa')],
360 ["Y\nW\r\nE=" => ASCII('aa')],
362 # These will generate some warnings
363 ['YWE=====' => ASCII('aa')], # extra padding
364 ['YWE' => ASCII('aa')], # missing padding
365 ['YWFh====' => ASCII('aaa')],
366 ['YQ' => ASCII('a')],
373 for $test (@decode_tests) {
374 my($encoded, $expected) = ($$test[0], $$test[1]);
376 my $decoded = decode_base64($encoded);
377 if ($decoded ne $expected) {
378 die "test $testno ($encoded): expected $expected, got $decoded\n";
380 print "ok $testno\n";