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