]> git.saurik.com Git - bison.git/blob - examples/mfcalc/test
mfcalc: extract and exercise.
[bison.git] / examples / mfcalc / test
1 #! /bin/sh
2
3 # Copyright (C) 2005-2012 Free Software Foundation, Inc.
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 me=`basename $0`
19
20 # Number of the current test.
21 number=1
22
23 # Exit status of this script.
24 exit=true
25
26 # The exercised program.
27 prog=./examples/mfcalc/mfcalc
28
29 # run EXPECTED-EXIT-STATUS EXPECTED-OUTPUT [PARSER-OPTIONS]
30 # ---------------------------------------------------------
31 run ()
32 {
33 # Effective and expected exit status.
34 local sta_exp=$1
35 shift
36 local out_exp=$1
37 shift
38 $prog "$@" - < input >out_eff
39 local sta_eff=$?
40 local out_eff=`cat out_eff`
41 if test $sta_eff -eq $sta_exp; then
42 if test "$out_eff" = "$out_exp"; then
43 printf "$me: PASS: %2d\n" $number
44 else
45 printf "$me: FAIL: %2d (expected output: %s, effective: %s\n" \
46 $number "$out_exp" "$out_eff"
47 exit=false
48 fi
49 else
50 printf "$me: FAIL: %2d (expected status: %d, effective: %d\n" \
51 $number $sta_exp $sta_eff
52 exit=false
53 fi
54 number=`expr $number + 1`
55 }
56
57 cat >input <<EOF
58 1+2*3
59 EOF
60 run 0 7
61 run 0 7
62
63 cat >input <<EOF
64 (1+2) * 3
65 EOF
66 run 0 9
67
68
69 rm input out_eff
70 $exit