Configure: house cleaning.
[gnumeric.git] / test / t9010-ssgrep.pl
blob6432ecb0a0c209e02e8e9c1c3e1ce52e2f3229dd
1 #!/usr/bin/perl -w
2 # -----------------------------------------------------------------------------
4 use strict;
5 use lib ($0 =~ m|^(.*/)| ? $1 : ".");
6 use GnumericTest;
8 my $src1 = "$samples/excel/statfuns.xls";
9 my $src2 = "$samples/excel/mathfuns.xls";
10 my $src3 = "$samples/excel/engfuns.xls";
11 my $src4 = "$samples/auto-filter-tests.gnumeric";
13 &GnumericTest::report_skip ("Missing source files")
14 unless -r $src1 && -r $src2 && -r $src3 && -r $src4;
17 my %expected;
18 &setup_expected ();
20 my $ngood = 0;
21 my $nbad = 0;
23 &message ("Checking ssgrep with single file.");
24 &check ("$ssgrep SUM $src1", 'TEST1A', 1);
25 &check ("$ssgrep SUM $src2", 'TEST1B', 0);
26 &check ("$ssgrep SUM $src3", 'TEST1C', 0);
28 &message ("Checking ssgrep with multiple files.");
29 &check ("$ssgrep SUM $src1 $src2 $src3", 'TEST1D', 0);
31 &message ("Checking ssgrep -n.");
32 &check ("$ssgrep -n SUM $src2", 'TEST2A', 0);
34 &message ("Checking ssgrep -c.");
35 &check ("$ssgrep -c SUM $src1", 'TEST3A', 1);
36 &check ("$ssgrep -c SUM $src2", 'TEST3B' ,0);
37 &check ("$ssgrep -c SUM $src3", 'TEST3C', 0);
39 &message ("Checking ssgrep -H.");
40 &check ("$ssgrep -H SUM $src2", 'TEST4A', 0);
42 &message ("Checking ssgrep -h.");
43 &check ("$ssgrep -h SUM $src1 $src2 $src3", 'TEST5A', 0);
45 &message ("Checking ssgrep with proper regexp.");
46 &check ("$ssgrep 'SUM[IS]' $src2", 'TEST6A', 0);
48 &message ("Checking ssgrep with hits on multiple sheets.");
49 &check ("$ssgrep -T -H -n wbc-gtk-actions $src4", 'TEST7A', 0);
51 &message ("Checking ssgrep -i.");
52 &check ("$ssgrep -h -i SUMIF $src1 $src2 $src3", 'TEST8A', 0);
54 &message ("Checking ssgrep -w.");
55 &check ("$ssgrep -h -i -w COUNT $src1 $src2 $src3", 'TEST9A', 0);
57 # -----------------------------------------------------------------------------
59 if ($nbad > 0) {
60 die "Fail\n";
61 } else {
62 print STDERR "Pass\n";
66 sub check {
67 my ($cmd,$tag,$ec) = @_;
69 my $expected = $expected{$tag};
70 die unless defined $expected;
72 print STDERR "# $cmd\n" if $GnumericTest::verbose;
73 my $output = `$cmd 2>&1`;
74 my $err = $?;
76 my $bad = 0;
77 if ($err != ($ec << 8)) {
78 print STDERR "Wrong exit status $err\n";
79 $bad++;
80 } elsif ($output ne $expected) {
81 print STDERR "Wrong output\n";
82 $bad++;
85 if ($bad) {
86 $nbad++;
87 &GnumericTest::dump_indented ($output || '(no output)');
88 } else {
89 $ngood++;
93 sub setup_expected {
94 my $tag = undef;
95 my $data = undef;
97 while (<DATA>) {
98 if (/^\*\*\* (\S+) \*\*\*$/) {
99 $expected{$tag} = $data if $tag;
100 $data = '';
101 $tag = $1;
102 next;
105 s/\$samples\b/$samples/g;
106 $data .= $_;
110 __DATA__
111 *** TEST1A ***
112 *** TEST1B ***
113 SERIESSUM
115 SUMIF
116 SUMPRODUCT
117 SUMSQ
118 SUMX2MY2
119 SUMX2PY2
120 SUMXMY2
121 *** TEST1C ***
122 IMSUM
123 *** TEST1D ***
124 $samples/excel/mathfuns.xls:SERIESSUM
125 $samples/excel/mathfuns.xls:SUM
126 $samples/excel/mathfuns.xls:SUMIF
127 $samples/excel/mathfuns.xls:SUMPRODUCT
128 $samples/excel/mathfuns.xls:SUMSQ
129 $samples/excel/mathfuns.xls:SUMX2MY2
130 $samples/excel/mathfuns.xls:SUMX2PY2
131 $samples/excel/mathfuns.xls:SUMXMY2
132 $samples/excel/engfuns.xls:IMSUM
133 *** TEST2A ***
134 Sheet1!A64:SERIESSUM
135 Sheet1!A71:SUM
136 Sheet1!A72:SUMIF
137 Sheet1!A73:SUMPRODUCT
138 Sheet1!A74:SUMSQ
139 Sheet1!A75:SUMX2MY2
140 Sheet1!A76:SUMX2PY2
141 Sheet1!A77:SUMXMY2
142 *** TEST3A ***
144 *** TEST3B ***
146 *** TEST3C ***
148 *** TEST4A ***
149 $samples/excel/mathfuns.xls:SERIESSUM
150 $samples/excel/mathfuns.xls:SUM
151 $samples/excel/mathfuns.xls:SUMIF
152 $samples/excel/mathfuns.xls:SUMPRODUCT
153 $samples/excel/mathfuns.xls:SUMSQ
154 $samples/excel/mathfuns.xls:SUMX2MY2
155 $samples/excel/mathfuns.xls:SUMX2PY2
156 $samples/excel/mathfuns.xls:SUMXMY2
157 *** TEST5A ***
158 SERIESSUM
160 SUMIF
161 SUMPRODUCT
162 SUMSQ
163 SUMX2MY2
164 SUMX2PY2
165 SUMXMY2
166 IMSUM
167 *** TEST6A ***
168 SUMIF
169 SUMSQ
170 *** TEST7A ***
171 $samples/auto-filter-tests.gnumeric:cell:Sheet1!G4:wbc-gtk-actions.c
172 $samples/auto-filter-tests.gnumeric:cell:Sheet2!G4:wbc-gtk-actions.c
173 $samples/auto-filter-tests.gnumeric:cell:Sheet3!G4:wbc-gtk-actions.c
174 *** TEST8A ***
175 SUMIF
176 =sumif(A14:A17,H14)
177 =sumif(B14:B17,H15)
178 =sumif(A14:A17,H15,C14:C17)
179 *** TEST9A ***
180 COUNT
181 =count(A14:A17)
182 =count(G14:G17)
183 =count(B14:B18)
184 *** END ***