more pack() tests
Jarkko Hietaniemi [Mon, 3 Aug 1998 00:59:41 +0000 (03:59 +0300)]
Message-Id: <199808022159.AAA17160@alpha.hut.fi>
Subject: Re: uudecode 'u' problem

p4raw-id: //depot/maint-5.005/perl@1719

t/op/pack.t

index c821ed6..9b7bc35 100755 (executable)
@@ -2,7 +2,7 @@
 
 # $RCSfile: pack.t,v $$Revision: 4.1 $$Date: 92/08/07 18:28:11 $
 
-print "1..58\n";
+print "1..60\n";
 
 $format = "c2 x5 C C x s d i l a6";
 # Need the expression in here to force ary[5] to be numeric.  This avoids
@@ -158,7 +158,7 @@ foreach my $t (@templates) {
     print "ok ", $test++, "\n";
 }
 
-# 57..58: uuencode/decode
+# 57..60: uuencode/decode
 
 $in = join "", map { chr } 0..255;
 
@@ -180,3 +180,26 @@ print "ok ", $test++, "\n";
 print "not " unless unpack('u', $uu) eq $in;
 print "ok ", $test++, "\n";
 
+$in = "\x1f\x8b\x08\x08\x58\xdc\xc4\x35\x02\x03\x4a\x41\x50\x55\x00\xf3\x2a\x2d\x2e\x51\x48\xcc\xcb\x2f\xc9\x48\x2d\x52\x08\x48\x2d\xca\x51\x28\x2d\x4d\xce\x4f\x49\x2d\xe2\x02\x00\x64\x66\x60\x5c\x1a\x00\x00\x00";
+$uu = <<'EOUU';
+M'XL("%C<Q#4"`TI!4%4`\RHM+E%(S,LOR4@M4@A(+<I1*"U-SD])+>("`&1F
+&8%P:````
+EOUU
+
+print "not " unless unpack('u', $uu) eq $in;
+print "ok ", $test++, "\n";
+
+# 60 identical to 59 except that backquotes have been changed to spaces
+
+$uu = <<'EOUU';
+M'XL("%C<Q#4" TI!4%4 \RHM+E%(S,LOR4@M4@A(+<I1*"U-SD])+>(" &1F
+&8%P:    
+EOUU
+
+print "not " unless unpack('u', $uu) eq $in;
+print "ok ", $test++, "\n";
+
+# Note that first uuencoding known 'text' data and then checking the
+# binary values of the uuencoded version would not be portable between
+# character sets.  Uuencoding is meant for encoding binary data, not
+# text data.