#   Copyright (C) 1997 - 2001 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# Please email any bugs, comments, and/or additions to this file to:
# bug-dejagnu@gnu.org

set timeout 3
#
# expectations that clean up in case of error. Note that `$test' is
# a purely local variable.
#
# The first of these is used to match any bad responses, and resynchronise
# things by finding a prompt. The second is a timeout error, and shouldn't
# ever be triggered.
#
expect_after {
    -re "\[^\n\r\]*$prompt$" {
	fail "$test (bad match)"
	if { $verbose > 0 } {
	    regexp ".*\r\n(\[^\r\n\]+)(\[\r\n\])+$prompt$" \
		$expect_out(buffer) "" output
	    send_user "\tUnmatched output: \"$output\"\n"
	}
    }
    timeout {
	fail "$test (timeout)"
    }
}
#
# Here are the tests
#
set test "version"
send "version\n"
expect {
    -re "Version:.*$prompt$"	{ pass "version" }
}

set test add1
send "add 3 4\n"
expect {
    -re "7+.*$prompt$"		{ pass "$test" }
}

set test add2
send "add 1 2 3\n"
expect {
    -re "Usage: add #1 #2.*$prompt$" { pass "$test" }
}

set test multiply1
send "multiply 3 4\n"
expect {
    -re "12.*$prompt$"		{ pass "$test" }
}

set test multiply2
send "multiply 2 4\n"
expect {
    -re "8.*$prompt$"		{ pass "$test" }
}

set test multiply3
send "multiply 1 2 3\n"
expect {
    -re "Usage: multiply #1 #2.*$prompt$" { pass "$test" }
}
