b819c5ae54422a3bd3536dbab13cb8cfa9318772
[platform/upstream/coreutils.git] / tests / factor / basic
1 #!/bin/sh
2 # -*-perl-*-
3
4 : ${PERL=perl}
5 : ${srcdir=.}
6
7 $PERL -e 1 > /dev/null 2>&1 || {
8   echo 1>&2 "$0: configure didn't find a usable version of Perl," \
9     "so can't run this test"
10   exit 77
11 }
12
13 d=$srcdir/..
14 exec $PERL -w -I$d -MCoreutils -- - << \EOF
15 require 5.003;
16 use strict;
17
18 (my $program_name = $0) =~ s|.*/||;
19
20 # Turn off localisation of executable's ouput.
21 @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
22
23 my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
24
25 my @Tests =
26     (
27      ['1', '9',          {OUT => '3 3'}],
28      ['1a', '7',         {OUT => '7'}],
29      ['2', '4294967291', {OUT => '4294967291'}],
30      ['3', '4294967292', {OUT => '2 2 3 3 7 11 31 151 331'}],
31      ['4', '4294967293', {OUT => '9241 464773'}],
32
33      ['a', '4294966201', {OUT => '12197 352133'}],
34      ['b', '4294966339', {OUT => '13187 325697'}],
35      ['c', '4294966631', {OUT => '13729 312839'}],
36      ['d', '4294966457', {OUT => '14891 288427'}],
37      ['e', '4294966759', {OUT => '21649 198391'}],
38      ['f', '4294966573', {OUT => '23071 186163'}],
39      ['g', '4294967101', {OUT => '23603 181967'}],
40      ['h', '4294966519', {OUT => '34583 124193'}],
41      ['i', '4294966561', {OUT => '36067 119083'}],
42      ['j', '4294966901', {OUT => '37747 113783'}],
43      ['k', '4294966691', {OUT => '39241 109451'}],
44      ['l', '4294966969', {OUT => '44201 97169'}],
45      ['m', '4294967099', {OUT => '44483 96553'}],
46      ['n', '4294966271', {OUT => '44617 96263'}],
47      ['o', '4294966789', {OUT => '50411 85199'}],
48      ['p', '4294966189', {OUT => '53197 80737'}],
49      ['q', '4294967213', {OUT => '57139 75167'}],
50      ['s', '4294967071', {OUT => '65521 65551'}],
51      ['t', '4294966194', {OUT => '2 3 3 3 3 3 3 3 53 97 191'}],
52      ['u', '4294966272', {OUT => '2 2 2 2 2 2 2 2 2 2 3 23 89 683'}],
53      ['v', '4294966400', {OUT => '2 2 2 2 2 2 2 5 5 1342177'}],
54      ['w', '4294966464', {OUT => '2 2 2 2 2 2 3 3 3 2485513'}],
55      ['x', '4294966896', {OUT => '2 2 2 2 3 3 3 11 607 1489'}],
56      ['y', '4294966998', {OUT => '2 3 7 3917 26107'}],
57      ['z', '-1',
58       {ERR => "$prog: invalid option -- 1\n"
59        . "Try `$prog --help' for more information.\n"},
60       {EXIT => 1}],
61      ['cont', 'a 4',
62       {OUT => "4: 2 2\n"},
63       {ERR => "$prog: `a' is not a valid positive integer\n"},
64       {EXIT => 1}],
65     );
66
67 # Prepend the command line argument and append a newline to end
68 # of each expected `OUT' string.
69 my $t;
70
71 Test:
72 foreach $t (@Tests)
73   {
74     my $arg1 = $t->[1];
75
76     # Don't fiddle with expected OUT string if there's a nonzero exit status.
77     foreach my $e (@$t)
78       {
79         ref $e eq 'HASH' && exists $e->{EXIT} && $e->{EXIT}
80           and next Test;
81       }
82
83     foreach my $e (@$t)
84       {
85         ref $e eq 'HASH' && exists $e->{OUT}
86           and $e->{OUT} = "$arg1: $e->{OUT}\n"
87       }
88   }
89
90 my $save_temps = $ENV{SAVE_TEMPS};
91 my $verbose = $ENV{VERBOSE};
92
93 my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
94 exit $fail;
95 EOF