Blob Blame History Raw
#! /bin/sh
#  -*- Mode: Shell-script -*-
# define.test --- test evalstack functionality
#
# Author:            Bruce Korb <bkorb@gnu.org>
##
## This file is part of AutoGen.
## AutoGen Copyright (C) 1992-2016 by Bruce Korb - all rights reserved
##
## AutoGen 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.
##
## AutoGen 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/>.
##
#
# ----------------------------------------------------------------------

. ./defs

# # # # # # # TEMPLATE LIBRARY FILE # # # # # #

echo creating $testname.tlib
cat > $testname.tlib <<'_EOF_'
[+ AutoGen5 Template Library +]
[+

# * * * * * * * * * * * *

      VISUAL SEPARATION
+][+

DEFINE first_macro
+][+(for-index)+] Argument list:
	[+
  FOR arg "\n\t"
    +]arg[ [+(for-index)+] ] = [+ arg +][+
  ENDFOR +][+
ENDDEF +][+

# * * * * * * * * * * * *

      VISUAL SEPARATION
+][+

DEFINE last_macro
  +]This is the last (number [+(for-index)+]) macro.[+
ENDDEF +]
_EOF_


# # # # # # # # # # TEMPLATE FILE # # # # # # # # #

echo creating $testname.tpl
cat > $testname.tpl <<'_EOF_'
[= AutoGen5 Template test =]
[=

DEFINE nest     =][=
  IF (exist? "name") =]
level [=(shell "printf '%u\\n' " (get "level"))
=] iteration [=(for-index)=] Nested Name:  [=name=][=
  ENDIF         =][=

  FOR .nesting  =][=
    nest        =][=
  ENDFOR        =][=

ENDDEF nest     =][=

FOR value

=][=
  IF (or (first-for?) (last-for?)) =][=
    INVOKE (string-append (get "value") "_macro")
       arg = one  arg = "the second arg = the second"
       arg = (shell "LC_ALL=C date +'%A, %D'") arg = 'done.' =][=
  ELSE =]

     non first/last value: [=value=] = [= (for-index) =]
[=ENDIF         =][=
ENDFOR          =]
[=invoke nest   =]
Done.
_EOF_


# # # # # # # # # # DEFINITIONS FILE # # # # # # # # #

echo creating $testname.def
cat > $testname.def <<_EOF_
autogen definitions $testname;

value = first;
value[2] = secondary;
value[4] = tertiary;
value[6] = last;

level = 0;
nesting[1] = {
  level = 1;
  name = primary;
  nesting[1] = {
    level = 0x2;
    name = secondary;
  }, {
    level = 0x2;
    /* no name defined - default to primary level */
    nesting[1] = {
      level = 3;
      name = tertiary;
    };
  };
};
_EOF_

# this is the output we should expect to see
cat > $testname.samp <<_EOF_
0 Argument list:
	arg[ 0 ] = one
	arg[ 1 ] = the second arg = the second
	arg[ 2 ] = `LC_ALL=C date +'%A, %D'`
	arg[ 3 ] = done.

     non first/last value: secondary = 2


     non first/last value: tertiary = 4
This is the last (number 6) macro.

level 1 iteration 1 Nested Name:  primary
level 2 iteration 1 Nested Name:  secondary
level 2 iteration 2 Nested Name:  primary
level 3 iteration 1 Nested Name:  tertiary
Done.
_EOF_

run_ag x --lib=$testname.tlib $testname.def || \
  failure "autogen failed"
set -x
cmp -s $testname.samp $testname.test || \
  failure "`diff $testname.samp $testname.test`"

cleanup

## Local Variables:
## mode: shell-script
## indent-tabs-mode: nil
## sh-indentation: 2
## sh-basic-offset: 2
## End:

# end of define.test