| |
| |
|
|
| |
|
|
| |
| |
| |
| |
|
|
| |
| |
| |
| |
|
|
| |
| |
|
|
| use strict; |
|
|
| my $limits = getlimits (); |
| my $UINTMAX_OFLOW = $limits->{UINTMAX_OFLOW}; |
|
|
| (my $program_name = $0) =~ s|.*/||; |
| my $prog = 'expand'; |
| |
| # Turn off localization of executable's output. |
| @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; |
| |
| my @Tests = |
| ( |
| ['t1', '--tabs=3', {IN=>"a\tb"}, {OUT=>"a b"}], |
| ['t2', '--tabs=3,6,9', {IN=>"a\tb\tc\td\te"}, {OUT=>"a b c d e"}], |
| ['t3', '--tabs="3 6 9"', {IN=>"a\tb\tc\td\te"}, {OUT=>"a b c d e"}], |
| # Leading space/commas are silently ignored; Mixing space/commas is allowed. |
| |
| ['t4', '--tabs=", 3,6 9"', {IN=>"a\tb\tc\td\te"}, {OUT=>"a b c d e"}], |
| |
| ['t5', '--tabs=""', {IN=>"a\tb\tc"}, {OUT=>"a b c"}], |
| ['t6', '--tabs=","', {IN=>"a\tb\tc"}, {OUT=>"a b c"}], |
| ['t7', '--tabs=" "', {IN=>"a\tb\tc"}, {OUT=>"a b c"}], |
| ['t8', '--tabs="/"', {IN=>"a\tb\tc"}, {OUT=>"a b c"}], |
|
|
| |
| ['if', '--tabs=6,9', {IN=>"a\tbbbbbbbbbbbbb\tc"}, |
| {OUT=>"a bbbbbbbbbbbbb c"}], |
|
|
| ['i1', '--tabs=3 -i', {IN=>"\ta\tb"}, {OUT=>" a\tb"}], |
| ['i2', '--tabs=3 -i', {IN=>" \ta\tb"}, {OUT=>" a\tb"}], |
|
|
| |
| |
| |
| ['u1', '-3', {IN=>"a\tb\tc"}, {OUT=>"a b c"}], |
| ['u2', '-4 -9', {IN=>"a\tb\tc"}, {OUT=>"a b c"}], |
| ['u3', '-11', {IN=>"a\tb\tc"}, {OUT=>"a b c"}], |
| |
| ['u4', '-2 -6', {IN=>"a\tb\tc"}, {OUT=>"a b c"}], |
| ['u5', '-7', {IN=>"a\tb"}, {OUT=>"a b"}], |
| ['u6', '-8', {IN=>"a\tb"}, {OUT=>"a b"}], |
| |
| ['u7', '-3,9', {IN=>"a\tb\tc"}, {OUT=>"a b c"}], |
|
|
| |
| ['f1', '--tabs=4', |
| {IN=>{"in1" => "a\tb\n"}}, {IN=>{"in2" => "c\td\n"}}, |
| {OUT=>"a b\nc d\n"}], |
| |
| ['f2', '--tabs=4', |
| {IN=>{"in1" => ""}}, {IN=>{"in2" => "c\td\n"}}, |
| {OUT=>"c d\n"}], |
| |
| ['f3', '--tabs=4', |
| {IN=>{"in1" => "a\tb\n"}}, {IN=>{"in2" => ""}}, |
| {OUT=>"a b\n"}], |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| ['b1','', {IN=>"aaa\b\b\bc\td\n"}, {OUT=>"aaa\b\b\bc d\n"}], |
|
|
| |
| ['b2','', {IN=>"\bc\td"}, {OUT=>"\bc d"}], |
|
|
| |
| |
| ['b3','--tabs 2,4,6,10', |
| {IN=>"1\t2\t3\t4\t5\n" . |
| "a\tb\tc\td\te\n"}, |
| {OUT=>"1 2 3 4 5\n" . |
| "a b c d e\n"}], |
|
|
| |
| ['b4','--tabs 2,4,6,10', |
| {IN=>"1\t2\t3\t4\t5\n" . |
| "a\tbHELLO\b\b\b\b\b\tc\td\te\n"}, |
| {OUT=>"1 2 3 4 5\n" . |
| "a bHELLO\b\b\b\b\b c d e\n"}], |
|
|
| |
| |
| |
| |
| ['b5','--tabs 2,4,6,10', |
| {IN=>"1\t2\t3\t4\t5\n" . |
| "a\tbHELLO\b\b\b\tc\td\te\n"}, |
| {OUT=>"1 2 3 4 5\n" . |
| "a bHELLO\b\b\b c d e\n"}], |
|
|
| |
| |
| ['trail1', '--tabs=1,/5', {IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
| ['trail2', '--tabs=2,/5', {IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
| ['trail3', '--tabs=1,2,/5', {IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
| ['trail4', '--tabs=/5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['trail5', '--tabs=//5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['trail5a','--tabs=+/5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['trail6', '--tabs=/,/5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['trail7', '--tabs=,/5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['trail8', '--tabs=1 -t/5', {IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
| ['trail9', '--tab=1,2 -t/5',{IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
|
|
| |
| |
| ['incre0', '--tab=1,+5', {IN=>"+\t\ta\tb"}, {OUT=>"+ a b"}], |
| ['incre1', '--tabs=1,+5', {IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
| ['incre2', '--tabs=2,+5', {IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
| ['incre3', '--tabs=1,2,+5', {IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
| ['incre4', '--tabs=+5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['incre5', '--tabs=++5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['incre5a','--tabs=/+5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['incre6', '--tabs=+,+5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['incre7', '--tabs=,+5', {IN=>"\ta\tb"}, {OUT=>" a b"}], |
| ['incre8', '--tabs=1 -t+5', {IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
| ['incre9', '--tab=1,2 -t+5',{IN=>"\ta\tb\tc"}, {OUT=>" a b c"}], |
|
|
|
|
| |
| ['e1', '--tabs="a"', {IN=>''}, {OUT=>''}, {EXIT=>1}, |
| {ERR => "$prog: tab size contains invalid character(s): 'a'\n"}], |
| ['e2', "-t $UINTMAX_OFLOW", {IN=>''}, {OUT=>''}, {EXIT=>1}, |
| {ERR => "$prog: tab stop is too large '$UINTMAX_OFLOW'\n"}], |
| ['e3', '--tabs=0', {IN=>''}, {OUT=>''}, {EXIT=>1}, |
| {ERR => "$prog: tab size cannot be 0\n"}], |
| ['e4', '--tabs=3,3', {IN=>''}, {OUT=>''}, {EXIT=>1}, |
| {ERR => "$prog: tab sizes must be ascending\n"}], |
| ['e5', '--tabs=/3,6,8', {IN=>''}, {OUT=>''}, {EXIT=>1}, |
| {ERR => "$prog: '/' specifier only allowed with the last value\n"}], |
| ['e6', '-t/3 -t/6', {IN=>''}, {OUT=>''}, {EXIT=>1}, |
| {ERR => "$prog: '/' specifier only allowed with the last value\n"}], |
| ['e7', '--tabs=3/', {IN=>''}, {OUT=>''}, {EXIT=>1}, |
| {ERR => "$prog: '/' specifier not at start of number: '/'\n"}], |
| ); |
|
|
| my $save_temps = $ENV{DEBUG}; |
| my $verbose = $ENV{VERBOSE}; |
|
|
| my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose); |
| exit $fail; |
|
|