]> git.saurik.com Git - bison.git/blame - examples/calc++/test
calc++: factor for other extracted tests.
[bison.git] / examples / calc++ / test
CommitLineData
0ffd4fd1 1#! /bin/sh
828c373b 2
3272a725
AD
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
414c76a4
AD
18me=`basename $0`
19
20# Number of the current test.
21number=1
22
23# Exit status of this script.
24exit=true
25
2e4986a8
AD
26# The exercised program.
27prog=./examples/calc++/calc++
28
1a7a65f9
AD
29# run EXPECTED-EXIT-STATUS EXPECTED-OUTPUT [PARSER-OPTIONS]
30# ---------------------------------------------------------
414c76a4
AD
31run ()
32{
33 # Effective and expected exit status.
34 local sta_exp=$1
35 shift
1a7a65f9
AD
36 local out_exp=$1
37 shift
2e4986a8 38 $prog "$@" - <input >out_eff
414c76a4 39 local sta_eff=$?
1a7a65f9 40 local out_eff=`cat out_eff`
414c76a4 41 if test $sta_eff -eq $sta_exp; then
1a7a65f9
AD
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
414c76a4
AD
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
2e4986a8
AD
57
58cat >input <<EOF
59toto := 1
60toto
61EOF
62run 0 1 -s
63
64
0ffd4fd1
AD
65cat >input <<EOF
66a := 1
67b := 2
68c := 3
69d := a + b * c
70d
71EOF
1a7a65f9
AD
72run 0 7
73run 0 7 -p
74
75
76cat >input <<EOF
77a := 1
78b := 2
79c := 3
80d := (a + b) * c
81d
82EOF
83run 0 9
0ffd4fd1 84
0ffd4fd1
AD
85
86cat >input <<EOF
87a := 1
88d := a + b * c
89EOF
2e4986a8 90run 1 ''
828c373b 91
1a7a65f9 92rm input out_eff
414c76a4 93$exit