From: Gurusamy Sarathy Date: Sun, 25 Mar 2001 15:50:53 +0000 (+0000) Subject: readd mimeqp.t as xtext (used to be binary because of the literal 8-bit X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=af6f229e27b719fa3dd2bafad669f1c66574be13;p=p5sagit%2Fp5-mst-13.2.git readd mimeqp.t as xtext (used to be binary because of the literal 8-bit chars) p4raw-id: //depot/perl@9340 --- diff --git a/t/lib/mimeqp.t b/t/lib/mimeqp.t new file mode 100755 index 0000000..b3a740a --- /dev/null +++ b/t/lib/mimeqp.t @@ -0,0 +1,109 @@ +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; +} + +use MIME::QuotedPrint; + +$x70 = "x" x 70; + +@tests = + ( + # plain ascii should not be encoded + ["quoted printable" => + "quoted printable"], + + # 8-bit chars should be encoded + ["våre kjære norske tegn bør æres" => + "v=E5re kj=E6re norske tegn b=F8r =E6res"], + + # trailing space should be encoded + [" " => "=20=20"], + ["\tt\t" => "\tt=09"], + ["test \ntest\n\t \t \n" => "test=20=20\ntest\n=09=20=09=20\n"], + + # "=" is special an should be decoded + ["=\n" => "=3D\n"], + ["\0\xff" => "=00=FF"], + + # Very long lines should be broken (not more than 76 chars + ["The Quoted-Printable encoding is intended to represent data that largly consists of octets that correspond to printable characters in the ASCII character set." => + "The Quoted-Printable encoding is intended to represent data that largly con= +sists of octets that correspond to printable characters in the ASCII charac= +ter set." + ], + + # Long lines after short lines were broken through 2.01. + ["short line +In America, any boy may become president and I suppose that's just one of the risks he takes. -- Adlai Stevenson" => + "short line +In America, any boy may become president and I suppose that's just one of t= +he risks he takes. -- Adlai Stevenson"], + + # My (roderick@argon.org) first crack at fixing that bug failed for + # multiple long lines. + ["College football is a game which would be much more interesting if the faculty played instead of the students, and even more interesting if the +trustees played. There would be a great increase in broken arms, legs, and necks, and simultaneously an appreciable diminution in the loss to humanity. -- H. L. Mencken" => + "College football is a game which would be much more interesting if the facu= +lty played instead of the students, and even more interesting if the +trustees played. There would be a great increase in broken arms, legs, and= + necks, and simultaneously an appreciable diminution in the loss to humanit= +y. -- H. L. Mencken"], + + # Don't break a line that's near but not over 76 chars. + ["$x70!23" => "$x70!23"], + ["$x70!234" => "$x70!234"], + ["$x70!2345" => "$x70!2345"], + ["$x70!23456" => "$x70!23456"], + ["$x70!23\n" => "$x70!23\n"], + ["$x70!234\n" => "$x70!234\n"], + ["$x70!2345\n" => "$x70!2345\n"], + ["$x70!23456\n" => "$x70!23456\n"], + + # Not allowed to break =XX escapes using soft line break + ["$x70===xxxx" => "$x70=3D=\n=3D=3Dxxxx"], + ["$x70!===xxx" => "$x70!=3D=\n=3D=3Dxxx"], + ["$x70!!===xx" => "$x70!!=3D=\n=3D=3Dxx"], + ["$x70!!!===x" => "$x70!!!=\n=3D=3D=3Dx"], + # ^ + # 70123456| + # max + # line width +); + +$notests = @tests + 2; +print "1..$notests\n"; + +$testno = 0; +for (@tests) { + $testno++; + ($plain, $encoded) = @$_; + $x = encode_qp($plain); + if ($x ne $encoded) { + print "Encode test failed\n"; + print "Got: '$x'\n"; + print "Expected: '$encoded'\n"; + print "not ok $testno\n"; + next; + } + $x = decode_qp($encoded); + if ($x ne $plain) { + print "Decode test failed\n"; + print "Got: '$x'\n"; + print "Expected: '$plain'\n"; + print "not ok $testno\n"; + next; + } + print "ok $testno\n"; +} + +# Some extra testing for a case that was wrong until libwww-perl-5.09 +print "not " unless decode_qp("foo \n\nfoo =\n\nfoo=20\n\n") eq + "foo\n\nfoo \nfoo \n\n"; +$testno++; print "ok $testno\n"; + +# Same test but with "\r\n" terminated lines +print "not " unless decode_qp("foo \r\n\r\nfoo =\r\n\r\nfoo=20\r\n\r\n") eq + "foo\r\n\r\nfoo \r\nfoo \r\n\r\n"; +$testno++; print "ok $testno\n"; +