#! @builddir@/grub-shell-tester

# Run GRUB script in a Qemu instance
# Copyright (C) 2010  Free Software Foundation, Inc.
#
# GRUB 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.
#
# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.

echo parameter count
function fcount {
  echo fcount "$#"
}

fcount
fcount a
fcount a b

echo parameter count, with nesting
function ffcount {
  echo ffcount "$#"
  fcount
  fcount a
  fcount a b
}

ffcount
ffcount 1
ffcount 1 2

echo parameters
function fparam {
  echo fparam 1 $1
  echo fparam 2 $2
  echo fparam 3 $3
}

fparam
fparam a
fparam a b

echo parameters, with nesting
function ffparam {
  echo ffparam 1 $1
  echo ffparam 2 $2
  echo ffparam 3 $3
  fparam
  fparam a
  fparam a b
}

ffparam
ffparam 1
ffparam 1 2

echo parameter expansion with specials
function fstar {
  for f in $*
  do
    echo fstar $f
  done

  for f in aaa$*bbb
  do
    echo fstar $f
  done
}

fstar
fstar a
fstar a "1 2"
fstar a "1 2" b

function fdqstar {
  for f in "$*"
  do
    echo fdqstar $f
  done

  for f in aaa"$*"bbb
  do
    echo fdqstar $f
  done

  for f in "aaa$*bbb"
  do
    echo fdqstar $f
  done
}

fdqstar
fdqstar a
fdqstar a "1 2"
fdqstar a "1 2" b

function fat {
  for f in $@
  do
    echo fat $f
  done

  for f in aaa$@bbb
  do
    echo fat $f
  done
}

fat
fat a
fat a "1 2"
fat a "1 2" b
fat a "1 2" b "c d"
fat a "1 2" b "c d" e

function fdqat {
  for f in "$@"
  do
    echo fdqat $f
  done

  for f in aaa"$@"bbb
  do
    echo fdqat $f
  done

  for f in "aaa$@bbb"
  do
    echo fdqat $f
  done
}

# fdqat # this case needs special handling, lets ignore till we really need it.
fdqat a
fdqat a "1 2"
fdqat a "1 2" b
fdqat a "1 2" b "c d"
fdqat a "1 2" b "c d" e