1#!/usr/old/bin/perl5.004_01 -w 2 3@tests = (split(/\nEND\n/s, <<DONE)); 4TEST 1 u 5 x 6END 7 x 8END 9TEST 2 e 10 x 11END 12 x 13END 14TEST 3 e 15 x 16 y 17 z 18END 19 x 20 y 21 z 22END 23TEST 4 u 24 x 25 y 26 z 27END 28 x 29 y 30 z 31END 32TEST 5 u 33This Is a test of a line with many embedded tabs 34END 35This Is a test of a line with many embedded tabs 36END 37TEST 6 e 38This Is a test of a line with many embedded tabs 39END 40This Is a test of a line with many embedded tabs 41END 42TEST 7 u 43 x 44END 45 x 46END 47TEST 8 e 48 49 50 51 52 53END 54 55 56 57 58 59END 60TEST 9 u 61 62END 63 64END 65TEST 10 u 66 67 68 69 70 71END 72 73 74 75 76 77END 78TEST 11 u 79foobar IN A 140.174.82.12 80 81END 82foobar IN A 140.174.82.12 83 84END 85DONE 86 87$| = 1; 88 89my $numtests = scalar(@tests) / 2; 90print "1..$numtests\n"; 91 92use Text::Tabs; 93 94$rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1; 95 96$tn = 1; 97while (@tests) { 98 my $in = shift(@tests); 99 my $out = shift(@tests); 100 101 $in =~ s/^TEST\s*(\d+)?\s*(\S+)?\n//; 102 103 if ($2 eq 'e') { 104 $f = \&expand; 105 $fn = 'expand'; 106 } else { 107 $f = \&unexpand; 108 $fn = 'unexpand'; 109 } 110 111 my $back = &$f($in); 112 113 if ($back eq $out) { 114 print "ok $tn\n"; 115 } elsif ($rerun) { 116 my $oi = $in; 117 foreach ($in, $back, $out) { 118 s/\t/^I\t/gs; 119 s/\n/\$\n/gs; 120 } 121 print "------------ input ------------\n"; 122 print $in; 123 print "\$\n------------ $fn -----------\n"; 124 print $back; 125 print "\$\n------------ expected ---------\n"; 126 print $out; 127 print "\$\n-------------------------------\n"; 128 $Text::Tabs::debug = 1; 129 my $back = &$f($in); 130 exit(1); 131 } else { 132 print "not ok $tn\n"; 133 } 134 $tn++; 135} 136