"Fossies" - the Fresh Open Source Software Archive

Member "MIME-Base64-3.16/t/base64.t" (27 Sep 2020, 8394 Bytes) of package /linux/privat/MIME-Base64-3.16.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "base64.t": 3.15_vs_3.16.

    1 use strict;
    2 use warnings;
    3 
    4 BEGIN {
    5     if ($ENV{'PERL_CORE'}){
    6         chdir 't' if -d 't';
    7         @INC = '../lib';
    8     }
    9 }
   10 
   11 use MIME::Base64;
   12 
   13 print "1..283\n";
   14 
   15 print "# Testing MIME::Base64-", $MIME::Base64::VERSION, "\n";
   16 
   17 BEGIN {
   18  if (ord('A') == 0x41) {
   19   *ASCII = sub { return $_[0] };
   20  }
   21  else {
   22   require Encode;
   23   *ASCII = sub { Encode::encode('ascii',$_[0]) };
   24  }
   25 }
   26 
   27 my $testno = 1;
   28 # instead of "for my $test (...)" , which is my preference.
   29 # Not sure which perl version has started supporting.  MIME::Base64
   30 # was supposed to work with very old perl5, right?
   31 my $test;
   32 
   33 encodeTest();
   34 decodeTest();
   35 
   36 # This used to generate a warning
   37 print "not " unless decode_base64(encode_base64("foo")) eq "foo";
   38 print "ok ", $testno++, "\n";
   39 
   40 sub encodeTest
   41 {
   42     print "# encode test\n";
   43 
   44     my @encode_tests = (
   45 	# All values
   46 	["\000" => "AA=="],
   47 	["\001" => "AQ=="],
   48 	["\002" => "Ag=="],
   49 	["\003" => "Aw=="],
   50 	["\004" => "BA=="],
   51 	["\005" => "BQ=="],
   52 	["\006" => "Bg=="],
   53 	["\007" => "Bw=="],
   54 	["\010" => "CA=="],
   55 	["\011" => "CQ=="],
   56 	["\012" => "Cg=="],
   57 	["\013" => "Cw=="],
   58 	["\014" => "DA=="],
   59 	["\015" => "DQ=="],
   60 	["\016" => "Dg=="],
   61 	["\017" => "Dw=="],
   62 	["\020" => "EA=="],
   63 	["\021" => "EQ=="],
   64 	["\022" => "Eg=="],
   65 	["\023" => "Ew=="],
   66 	["\024" => "FA=="],
   67 	["\025" => "FQ=="],
   68 	["\026" => "Fg=="],
   69 	["\027" => "Fw=="],
   70 	["\030" => "GA=="],
   71 	["\031" => "GQ=="],
   72 	["\032" => "Gg=="],
   73 	["\033" => "Gw=="],
   74 	["\034" => "HA=="],
   75 	["\035" => "HQ=="],
   76 	["\036" => "Hg=="],
   77 	["\037" => "Hw=="],
   78 	["\040" => "IA=="],
   79 	["\041" => "IQ=="],
   80 	["\042" => "Ig=="],
   81 	["\043" => "Iw=="],
   82 	["\044" => "JA=="],
   83 	["\045" => "JQ=="],
   84 	["\046" => "Jg=="],
   85 	["\047" => "Jw=="],
   86 	["\050" => "KA=="],
   87 	["\051" => "KQ=="],
   88 	["\052" => "Kg=="],
   89 	["\053" => "Kw=="],
   90 	["\054" => "LA=="],
   91 	["\055" => "LQ=="],
   92 	["\056" => "Lg=="],
   93 	["\057" => "Lw=="],
   94 	["\060" => "MA=="],
   95 	["\061" => "MQ=="],
   96 	["\062" => "Mg=="],
   97 	["\063" => "Mw=="],
   98 	["\064" => "NA=="],
   99 	["\065" => "NQ=="],
  100 	["\066" => "Ng=="],
  101 	["\067" => "Nw=="],
  102 	["\070" => "OA=="],
  103 	["\071" => "OQ=="],
  104 	["\072" => "Og=="],
  105 	["\073" => "Ow=="],
  106 	["\074" => "PA=="],
  107 	["\075" => "PQ=="],
  108 	["\076" => "Pg=="],
  109 	["\077" => "Pw=="],
  110 	["\100" => "QA=="],
  111 	["\101" => "QQ=="],
  112 	["\102" => "Qg=="],
  113 	["\103" => "Qw=="],
  114 	["\104" => "RA=="],
  115 	["\105" => "RQ=="],
  116 	["\106" => "Rg=="],
  117 	["\107" => "Rw=="],
  118 	["\110" => "SA=="],
  119 	["\111" => "SQ=="],
  120 	["\112" => "Sg=="],
  121 	["\113" => "Sw=="],
  122 	["\114" => "TA=="],
  123 	["\115" => "TQ=="],
  124 	["\116" => "Tg=="],
  125 	["\117" => "Tw=="],
  126 	["\120" => "UA=="],
  127 	["\121" => "UQ=="],
  128 	["\122" => "Ug=="],
  129 	["\123" => "Uw=="],
  130 	["\124" => "VA=="],
  131 	["\125" => "VQ=="],
  132 	["\126" => "Vg=="],
  133 	["\127" => "Vw=="],
  134 	["\130" => "WA=="],
  135 	["\131" => "WQ=="],
  136 	["\132" => "Wg=="],
  137 	["\133" => "Ww=="],
  138 	["\134" => "XA=="],
  139 	["\135" => "XQ=="],
  140 	["\136" => "Xg=="],
  141 	["\137" => "Xw=="],
  142 	["\140" => "YA=="],
  143 	["\141" => "YQ=="],
  144 	["\142" => "Yg=="],
  145 	["\143" => "Yw=="],
  146 	["\144" => "ZA=="],
  147 	["\145" => "ZQ=="],
  148 	["\146" => "Zg=="],
  149 	["\147" => "Zw=="],
  150 	["\150" => "aA=="],
  151 	["\151" => "aQ=="],
  152 	["\152" => "ag=="],
  153 	["\153" => "aw=="],
  154 	["\154" => "bA=="],
  155 	["\155" => "bQ=="],
  156 	["\156" => "bg=="],
  157 	["\157" => "bw=="],
  158 	["\160" => "cA=="],
  159 	["\161" => "cQ=="],
  160 	["\162" => "cg=="],
  161 	["\163" => "cw=="],
  162 	["\164" => "dA=="],
  163 	["\165" => "dQ=="],
  164 	["\166" => "dg=="],
  165 	["\167" => "dw=="],
  166 	["\170" => "eA=="],
  167 	["\171" => "eQ=="],
  168 	["\172" => "eg=="],
  169 	["\173" => "ew=="],
  170 	["\174" => "fA=="],
  171 	["\175" => "fQ=="],
  172 	["\176" => "fg=="],
  173 	["\177" => "fw=="],
  174 	["\200" => "gA=="],
  175 	["\201" => "gQ=="],
  176 	["\202" => "gg=="],
  177 	["\203" => "gw=="],
  178 	["\204" => "hA=="],
  179 	["\205" => "hQ=="],
  180 	["\206" => "hg=="],
  181 	["\207" => "hw=="],
  182 	["\210" => "iA=="],
  183 	["\211" => "iQ=="],
  184 	["\212" => "ig=="],
  185 	["\213" => "iw=="],
  186 	["\214" => "jA=="],
  187 	["\215" => "jQ=="],
  188 	["\216" => "jg=="],
  189 	["\217" => "jw=="],
  190 	["\220" => "kA=="],
  191 	["\221" => "kQ=="],
  192 	["\222" => "kg=="],
  193 	["\223" => "kw=="],
  194 	["\224" => "lA=="],
  195 	["\225" => "lQ=="],
  196 	["\226" => "lg=="],
  197 	["\227" => "lw=="],
  198 	["\230" => "mA=="],
  199 	["\231" => "mQ=="],
  200 	["\232" => "mg=="],
  201 	["\233" => "mw=="],
  202 	["\234" => "nA=="],
  203 	["\235" => "nQ=="],
  204 	["\236" => "ng=="],
  205 	["\237" => "nw=="],
  206 	["\240" => "oA=="],
  207 	["\241" => "oQ=="],
  208 	["\242" => "og=="],
  209 	["\243" => "ow=="],
  210 	["\244" => "pA=="],
  211 	["\245" => "pQ=="],
  212 	["\246" => "pg=="],
  213 	["\247" => "pw=="],
  214 	["\250" => "qA=="],
  215 	["\251" => "qQ=="],
  216 	["\252" => "qg=="],
  217 	["\253" => "qw=="],
  218 	["\254" => "rA=="],
  219 	["\255" => "rQ=="],
  220 	["\256" => "rg=="],
  221 	["\257" => "rw=="],
  222 	["\260" => "sA=="],
  223 	["\261" => "sQ=="],
  224 	["\262" => "sg=="],
  225 	["\263" => "sw=="],
  226 	["\264" => "tA=="],
  227 	["\265" => "tQ=="],
  228 	["\266" => "tg=="],
  229 	["\267" => "tw=="],
  230 	["\270" => "uA=="],
  231 	["\271" => "uQ=="],
  232 	["\272" => "ug=="],
  233 	["\273" => "uw=="],
  234 	["\274" => "vA=="],
  235 	["\275" => "vQ=="],
  236 	["\276" => "vg=="],
  237 	["\277" => "vw=="],
  238 	["\300" => "wA=="],
  239 	["\301" => "wQ=="],
  240 	["\302" => "wg=="],
  241 	["\303" => "ww=="],
  242 	["\304" => "xA=="],
  243 	["\305" => "xQ=="],
  244 	["\306" => "xg=="],
  245 	["\307" => "xw=="],
  246 	["\310" => "yA=="],
  247 	["\311" => "yQ=="],
  248 	["\312" => "yg=="],
  249 	["\313" => "yw=="],
  250 	["\314" => "zA=="],
  251 	["\315" => "zQ=="],
  252 	["\316" => "zg=="],
  253 	["\317" => "zw=="],
  254 	["\320" => "0A=="],
  255 	["\321" => "0Q=="],
  256 	["\322" => "0g=="],
  257 	["\323" => "0w=="],
  258 	["\324" => "1A=="],
  259 	["\325" => "1Q=="],
  260 	["\326" => "1g=="],
  261 	["\327" => "1w=="],
  262 	["\330" => "2A=="],
  263 	["\331" => "2Q=="],
  264 	["\332" => "2g=="],
  265 	["\333" => "2w=="],
  266 	["\334" => "3A=="],
  267 	["\335" => "3Q=="],
  268 	["\336" => "3g=="],
  269 	["\337" => "3w=="],
  270 	["\340" => "4A=="],
  271 	["\341" => "4Q=="],
  272 	["\342" => "4g=="],
  273 	["\343" => "4w=="],
  274 	["\344" => "5A=="],
  275 	["\345" => "5Q=="],
  276 	["\346" => "5g=="],
  277 	["\347" => "5w=="],
  278 	["\350" => "6A=="],
  279 	["\351" => "6Q=="],
  280 	["\352" => "6g=="],
  281 	["\353" => "6w=="],
  282 	["\354" => "7A=="],
  283 	["\355" => "7Q=="],
  284 	["\356" => "7g=="],
  285 	["\357" => "7w=="],
  286 	["\360" => "8A=="],
  287 	["\361" => "8Q=="],
  288 	["\362" => "8g=="],
  289 	["\363" => "8w=="],
  290 	["\364" => "9A=="],
  291 	["\365" => "9Q=="],
  292 	["\366" => "9g=="],
  293 	["\367" => "9w=="],
  294 	["\370" => "+A=="],
  295 	["\371" => "+Q=="],
  296 	["\372" => "+g=="],
  297 	["\373" => "+w=="],
  298 	["\374" => "/A=="],
  299 	["\375" => "/Q=="],
  300 	["\376" => "/g=="],
  301 	["\377" => "/w=="],
  302 
  303 	["\000\377" => "AP8="],
  304 	["\377\000" => "/wA="],
  305 	["\000\000\000" => "AAAA"],
  306 
  307         [''    => ''],
  308 	[ASCII('a')   => 'YQ=='],
  309 	[ASCII('aa')  => 'YWE='],
  310 	[ASCII('aaa') => 'YWFh'],
  311 
  312 	[ASCII('aaa') => 'YWFh'],
  313 	[ASCII('aaa') => 'YWFh'],
  314 	[ASCII('aaa') => 'YWFh'],
  315 
  316 
  317 	# from HTTP spec
  318 	[ASCII('Aladdin:open sesame') => 'QWxhZGRpbjpvcGVuIHNlc2FtZQ=='],
  319 
  320 	[ASCII('a') x 100 => 'YWFh' x 33 . 'YQ=='],
  321 
  322 	[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. ')
  323 	=> "TXVsdGlwdXJwb3NlIEludGVybmV0IE1haWwgRXh0ZW5zaW9uczogVGhlIEJhc2U2NCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIGlzIGRlc2lnbmVkIHRvIHJlcHJlc2VudCBzZXF1ZW5jZXMgb2Ygb2N0ZXRzIGluIGEgZm9ybSB0aGF0IGlzIG5vdCBodW1hbmx5IHJlYWRhYmxlLiA="],
  324 
  325     );
  326 
  327     for $test (@encode_tests) {
  328 	my($plain, $expected) = ($$test[0], $$test[1]);
  329 
  330 	my $encoded = encode_base64($plain, '');
  331 	if ($encoded ne $expected) {
  332 	    print "test $testno ($plain): expected $expected, got $encoded\n";
  333             print "not ";
  334 	}
  335 	my $decoded = decode_base64($encoded);
  336 	if ($decoded ne $plain) {
  337 	    print "test $testno ($encoded): expected $plain, got $decoded\n";
  338             print "not ";
  339 	}
  340 
  341 	print "ok $testno\n";
  342 	$testno++;
  343     }
  344 }
  345 
  346 sub decodeTest
  347 {
  348     print "# decode test\n";
  349 
  350     local $SIG{__WARN__} = sub { print $_[0] };  # avoid warnings on stderr
  351 
  352     my @decode_tests = (
  353 	['YWE='   => ASCII('aa')],
  354 	[' YWE='  =>  ASCII('aa')],
  355 	['Y WE='  =>  ASCII('aa')],
  356 	['YWE= '  =>  ASCII('aa')],
  357 	["Y\nW\r\nE=" =>  ASCII('aa')],
  358 
  359 	# These will generate some warnings
  360         ['YWE=====' =>  ASCII('aa')],    # extra padding
  361 	['YWE'      =>  ASCII('aa')],    # missing padding
  362         ['YWFh====' =>  ASCII('aaa')],
  363         ['YQ'       =>  ASCII('a')],
  364         ['Y'        => ''],
  365         ['x=='      => ''],
  366         [''         => ''],
  367         [undef()    => ''],
  368     );
  369 
  370     for $test (@decode_tests) {
  371 	my($encoded, $expected) = ($$test[0], $$test[1]);
  372 
  373 	my $decoded = decode_base64($encoded);
  374 	if ($decoded ne $expected) {
  375 	    die "test $testno ($encoded): expected $expected, got $decoded\n";
  376 	}
  377 	print "ok $testno\n";
  378 	$testno++;
  379     }
  380 }