From c1192f8af3fff4bf860a9e1583f704dbe2b3c0ac Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Thu, 16 Feb 2012 15:44:43 +0100 Subject: mfcalc: extract and exercise. * examples/mfcalc/local.mk, examples/mfcalc/test: New, based on calc++'s ones. * examples/local.mk: Include mfcalc/local.mk. --- examples/local.mk | 1 + examples/mfcalc/.gitignore | 11 ++++++++ examples/mfcalc/local.mk | 57 +++++++++++++++++++++++++++++++++++++ examples/mfcalc/test | 70 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 examples/mfcalc/.gitignore create mode 100644 examples/mfcalc/local.mk create mode 100755 examples/mfcalc/test diff --git a/examples/local.mk b/examples/local.mk index e6d69d08..02e82bb0 100644 --- a/examples/local.mk +++ b/examples/local.mk @@ -18,3 +18,4 @@ extexi = $(top_srcdir)/examples/extexi dist_noinst_SCRIPTS = examples/extexi include examples/calc++/local.mk +include examples/mfcalc/local.mk diff --git a/examples/mfcalc/.gitignore b/examples/mfcalc/.gitignore new file mode 100644 index 00000000..901c3553 --- /dev/null +++ b/examples/mfcalc/.gitignore @@ -0,0 +1,11 @@ +/*.o +/*.tmp +/.deps +/calc.h +/mfcalc +/mfcalc.c +/mfcalc.exe +/mfcalc.h +/mfcalc.stamp +/mfcalc.y + diff --git a/examples/mfcalc/local.mk b/examples/mfcalc/local.mk new file mode 100644 index 00000000..aae9e04b --- /dev/null +++ b/examples/mfcalc/local.mk @@ -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 . + +## ------------ ## +## 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 diff --git a/examples/mfcalc/test b/examples/mfcalc/test new file mode 100755 index 00000000..edcbc14a --- /dev/null +++ b/examples/mfcalc/test @@ -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 . + +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 <input <