#! @builddir@/grub-shell-tester
#
# 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/>.

true
echo $?

! true
echo $?

false
echo $?

! false
echo $?

#
# Negated forms (copied from grub_script_if.in)
#

#basic if, execute
if ! true; then echo yes; fi

#basic if, no execution
if ! false; then echo no; fi

#if else, execute if path
if ! true; then echo yes; else echo no; fi

#if else, execute else path
if ! false; then echo no; else echo yes; fi

#if elif, execute elif
if ! false; then echo no; elif ! true; then echo yes; fi

#if elif else, execute else
if ! false; then echo no; elif ! false; then echo no; else echo yes; fi

#if elif(1) elif(2), execute elif(2)
if false; then echo no; elif ! false; then echo no; elif ! true; then echo yes; fi

#if elif(1) elif(2) else, execute else
if false; then echo no; elif false; then echo no; elif ! false; then echo no; else echo yes; fi

#if {if elif else}, execute elif
if true; then if false; then echo no; elif ! true; then echo yes; else echo no; fi; fi

#if {if elif} else, execute elif. ofcourse no dangling-else problem due to "fi"
if true; then if ! false; then echo no; elif true; then echo yes; fi; else echo no; fi
