mfcalc: extract and exercise.

* examples/mfcalc/local.mk, examples/mfcalc/test: New,
	based on calc++'s ones.
	* examples/local.mk: Include mfcalc/local.mk.
This commit is contained in:
Akim Demaille
2012-02-16 15:44:43 +01:00
parent 2e4986a88d
commit c1192f8af3
4 changed files with 139 additions and 0 deletions

View File

@@ -18,3 +18,4 @@ extexi = $(top_srcdir)/examples/extexi
dist_noinst_SCRIPTS = examples/extexi
include examples/calc++/local.mk
include examples/mfcalc/local.mk

11
examples/mfcalc/.gitignore vendored Normal file
View File

@@ -0,0 +1,11 @@
/*.o
/*.tmp
/.deps
/calc.h
/mfcalc
/mfcalc.c
/mfcalc.exe
/mfcalc.h
/mfcalc.stamp
/mfcalc.y

57
examples/mfcalc/local.mk Normal file
View File

@@ -0,0 +1,57 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*-
## Copyright (C) 2005-2006, 2008-2012 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
## ------------ ##
## Extracting. ##
## ------------ ##
# Extract in src.
$(top_srcdir)/examples/mfcalc/mfcalc.stamp: $(doc) $(extexi)
$(AM_V_GEN)rm -f $@ $@.tmp
$(AM_V_at)touch $@.tmp
$(AM_V_at)cd $(top_srcdir)/examples/mfcalc && \
$(AWK) -f ../extexi -v VERSION="$(VERSION)" \
../../doc/bison.texinfo -- calc.h mfcalc.y
$(AM_V_at)mv $@.tmp $@
$(mfcalc_extracted): $(top_srcdir)/examples/mfcalc/mfcalc.stamp
$(AM_V_GEN)if test -f $@; then :; else \
rm -f $< && \
$(MAKE) $(AM_MAKEFLAGS) $<; \
fi
## -------------------- ##
## Building & testing. ##
## -------------------- ##
BUILT_SOURCES += $(mfcalc_sources)
MAINTAINERCLEANFILES += $(top_srcdir)/examples/mfcalc/mfcalc.stamp $(mfcalc_sources)
EXTRA_DIST += examples/mfcalc/mfcalc.stamp
mfcalc_extracted = \
examples/mfcalc/calc.h \
examples/mfcalc/mfcalc.y
mfcalc_sources = \
$(mfcalc_extracted)
check_PROGRAMS += examples/mfcalc/mfcalc
examples_mfcalc_mfcalc_SOURCES = \
$(mfcalc_sources)
examples_mfcalc_mfcalc_CPPFLAGS = -I$(top_srcdir)/examples/mfcalc
TESTS += examples/mfcalc/test
EXTRA_DIST += examples/mfcalc/test

70
examples/mfcalc/test Executable file
View File

@@ -0,0 +1,70 @@
#! /bin/sh
# Copyright (C) 2005-2012 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
me=`basename $0`
# Number of the current test.
number=1
# Exit status of this script.
exit=true
# The exercised program.
prog=./examples/mfcalc/mfcalc
# run EXPECTED-EXIT-STATUS EXPECTED-OUTPUT [PARSER-OPTIONS]
# ---------------------------------------------------------
run ()
{
# Effective and expected exit status.
local sta_exp=$1
shift
local out_exp=$1
shift
$prog "$@" - < input >out_eff
local sta_eff=$?
local out_eff=`cat out_eff`
if test $sta_eff -eq $sta_exp; then
if test "$out_eff" = "$out_exp"; then
printf "$me: PASS: %2d\n" $number
else
printf "$me: FAIL: %2d (expected output: %s, effective: %s\n" \
$number "$out_exp" "$out_eff"
exit=false
fi
else
printf "$me: FAIL: %2d (expected status: %d, effective: %d\n" \
$number $sta_exp $sta_eff
exit=false
fi
number=`expr $number + 1`
}
cat >input <<EOF
1+2*3
EOF
run 0 7
run 0 7
cat >input <<EOF
(1+2) * 3
EOF
run 0 9
rm input out_eff
$exit