bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master: mfcalc: extract and exercise


From: Akim Demaille
Subject: master: mfcalc: extract and exercise
Date: Thu, 16 Feb 2012 16:00:15 +0100

From this point, it will easier to document %printer.
In some other hacking session.

From c1192f8af3fff4bf860a9e1583f704dbe2b3c0ac Mon Sep 17 00:00:00 2001
From: Akim Demaille <address@hidden>
Date: Thu, 16 Feb 2012 15:44:43 +0100
Subject: [PATCH 5/5] 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(+), 0 deletions(-)
 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 e6d69d0..02e82bb 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 0000000..901c355
--- /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 0000000..aae9e04
--- /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 <http://www.gnu.org/licenses/>.
+
+## ------------ ##
+## Extracting.  ##
+## ------------ ##
+
+# Extract in src.
+$(top_srcdir)/examples/mfcalc/mfcalc.stamp: $(doc) $(extexi)
+       $(AM_V_GEN)rm -f $@ address@hidden
+       $(AM_V_at)touch address@hidden
+       $(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 address@hidden $@
+
+$(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 0000000..edcbc14
--- /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 <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
-- 
1.7.9





reply via email to

[Prev in Thread] Current Thread [Next in Thread]