#! @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/>.

function f1 {
    return
    echo one
}
f1

function f2 {
    true
    return
    echo one
}
if f2; then echo true; else echo false; fi

function f3 {
    false
    return
    echo one
}
if f3; then echo true; else echo false; fi

function f4 {
    true
    return 1;
    echo one
}
if f4; then echo true; else echo false; fi

function f5 {
    false
    return 0;
    echo one
}
if f5; then echo true; else echo false; fi

function f6 {
    echo one
    if true; then
	echo two
	return 0
    else
	echo three
	return 1
    fi
    echo four
}
if f6; then echo true; else echo false; fi

function f7 {
    if return 1; then
	echo one
    else
	echo no
    fi
}
if f7; then echo true; else echo false; fi

function f8 {
    echo one
    for v in 1 2 3 4 5; do
	echo $v
	if test $v = 3; then return 1; fi
    done
    echo two
}
if f8; then echo true; else echo false; fi

function f9 {
    x=1
    echo one
    until test x = 11111111; do
	echo $x
	x="1$x"
	if test $x = 1111; then return 0; fi
    done
    echo two
}
if f9; then echo true; else echo false; fi

function f10 {
    echo one
    while return 0; do
	echo two
    done
    echo three
}
if f10; then echo true; else echo false; fi

function f11 {
    f1
    f2
    f3
    f4
    f5
    f6
    f7
    f8
    f9
    f10
}
if f11; then echo true; else echo false; fi

function f12 {
    echo one
    f11
    return 1
    echo two
}
if f12; then echo true; else echo false; fi

function f13 {
    echo one
    f12
    echo two
    return 0
}
if f13; then echo true; else echo false; fi