# Copyright 1992, 1994, 1995, 1998 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-gdb@prep.ai.mit.edu

# This file was written by Fred Fish. (fnf@cygnus.com)

if $tracelevel then {
	strace $tracelevel
}

set prms_id 0
set bug_id 0

# Set the current language to chill.  This counts as a test.  If it
# fails, then we skip the other tests.

proc set_lang_chill {} {
    global gdb_prompt

    send_gdb "set language chill\n"
    gdb_expect {
	-re ".*$gdb_prompt $" {}
	timeout { fail "set language chill (timeout)" ; return 0 }
    }

    send_gdb "show language\n"
    gdb_expect {
	-re ".* source language is \"chill\".*$gdb_prompt $" {
	    pass "set language to \"chill\""
	    return 1
	}
	-re ".*$gdb_prompt $" {
	    fail "setting language to \"chill\""
	    return 0
	}
	timeout {
	    fail "can't show language (timeout)"
	    return 0
	}
    }
}

proc test_integer_literals_accepted {} {
    global gdb_prompt

    # Test various decimal values.

    gdb_test "p 123" " = 123"
    gdb_test "p -123" " = -123"
    gdb_test "p D'123" " = 123"
    gdb_test "p d'123" " = 123"
    gdb_test "p -D'123" " = -123"
    gdb_test "p -d'123" " = -123"
    gdb_test "p 12_345" " = 12345"
    gdb_test "p __1_2_3__" " = 123"
    gdb_test "p/d 123" " = D'123"

    # Test various binary values.

    gdb_test "p B'111" " = 7"
    gdb_test "p b'111" " = 7"
    gdb_test "p -B'111" " = -7"
    gdb_test "p B'0111" " = 7"
    gdb_test "p b'0111" " = 7"
    gdb_test "p -b'0111" " = -7"
    gdb_test "p B'_0_1_1_1_" " = 7"
    gdb_test "p b'_0_1_1_1_" " = 7"
    gdb_test "p -b'_0_1_1_1_" " = -7"
    gdb_test "p/t B'111" " = B'111"

    # Test various octal values.

    gdb_test "p O'123" " = 83"
    gdb_test "p o'123" " = 83"
    gdb_test "p -o'0123" " = -83"
    gdb_test "p O'0123" " = 83"
    gdb_test "p o'0123" " = 83"
    gdb_test "p -o'123" " = -83"
    gdb_test "p O'_1_2_3_" " = 83"
    gdb_test "p o'_1_2_3_" " = 83"
    gdb_test "p -o'_1_2_3_" " = -83"
    gdb_test "p/o O'123" " = O'123"

    # Test various hexadecimal values.

    gdb_test "p H'123" " = 291"
    gdb_test "p h'123" " = 291"
    gdb_test "p -h'123" " = -291"
    gdb_test "p H'0123" " = 291"
    gdb_test "p h'0123" " = 291"
    gdb_test "p -h'0123" " = -291"
    gdb_test "p H'_1_2_3_" " = 291"
    gdb_test "p h'_1_2_3_" " = 291"
    gdb_test "p -h'_1_2_3_" " = -291"
    gdb_test "p H'ABC" " = 2748"
    gdb_test "p H'abc" " = 2748"
    gdb_test "p H'AbC" " = 2748"
    gdb_test "p H'_A_b_C_" " = 2748"
    gdb_test "p H'_D_e_F_" " = 3567"
    gdb_test "p H'_d_E_f_" " = 3567"
    gdb_test "p/x H'123" " = H'123"
}

proc test_character_literals_accepted {} {
    global gdb_prompt

    # Test various decimal values.

    gdb_test "p 'a'" " = 'a'"
    gdb_test "p/x 'a'" " = H'61"
    gdb_test "p/d 'a'" " = D'97"
    gdb_test "p/t 'a'" " = B'1100001"
    # gdb_test "p '^(97)'" " = 'a'"	(not in GNU Chill)
    gdb_test "p C'61'" " = 'a'"
    gdb_test "p c'61'" " = 'a'"
    gdb_test "p/x C'FF'" " = H'ff"
    # gdb_test "p/x '^(H'FF)'" " = H'ff"	(not in GNU Chill)
    # gdb_test "p/x '^(D'255)'" " = H'ff"	(not in GNU Chill)
}

proc test_integer_literals_rejected {} {
    global gdb_prompt

    # These are valid integer literals in Z.200, but not GNU-Chill.

    test_print_reject "p _"
    test_print_reject "p __"

    test_print_reject "p D'" 
    test_print_reject "p D'_" 
    test_print_reject "p D'__" 

    test_print_reject "p B'" 
    test_print_reject "p B'_" 
    test_print_reject "p B'__" 

    test_print_reject "p O'" 
    test_print_reject "p O'_" 
    test_print_reject "p O'__" 

    test_print_reject "p H'" 
    test_print_reject "p H'_" 
    test_print_reject "p H'__" 

    # Test various decimal values.

    test_print_reject "p D'DEADBEEF"
    test_print_reject "p D'123DEADBEEF"

    # Test various binary values.

    test_print_reject "p B'2" "Too-large digit in bitstring or integer."
    test_print_reject "p B'12"  "Too-large digit in bitstring or integer."

    # Test various octal values.

    test_print_reject "p O'9"  "Too-large digit in bitstring or integer."
    test_print_reject "p O'79"  "Too-large digit in bitstring or integer."

    # Test various hexadecimal values.

    test_print_reject "p H'G" "Invalid character in bitstring or integer."
    test_print_reject "p H'AG" "Invalid character in bitstring or integer."
}

proc test_boolean_literals_accepted {} {
    global gdb_prompt

    # Test the only possible values for a boolean, TRUE and FALSE.

    gdb_test "p TRUE" " = TRUE"
    gdb_test "p FALSE" " = FALSE"
}

proc test_float_literals_accepted {} {
    global gdb_prompt

    # Test various floating point formats

    gdb_test "p .44 < .45" " = TRUE"
    gdb_test "p .44 > .45" " = FALSE"
    gdb_test "p 0.44 < 0.45" " = TRUE"
    gdb_test "p 0.44 > 0.45" " = FALSE"
    gdb_test "p 44. < 45." " = TRUE"
    gdb_test "p 44. > 45." " = FALSE"
    gdb_test "p 44.0 < 45.0" " = TRUE"
    gdb_test "p 44.0 > 45.0" " = FALSE"
    gdb_test "p 10D20 < 10D21" " = TRUE"
    gdb_test "p 10D20 > 10D21" " = FALSE"
    gdb_test "p 10d20 < 10d21" " = TRUE"
    gdb_test "p 10d20 > 10d21" " = FALSE"
    gdb_test "p 10E20 < 10E21" " = TRUE"
    gdb_test "p 10E20 > 10E21" " = FALSE"
    gdb_test "p 10e20 < 10e21" " = TRUE"
    gdb_test "p 10e20 > 10e21" " = FALSE"
    gdb_test "p 10.D20 < 10.D21" " = TRUE"
    gdb_test "p 10.D20 > 10.D21" " = FALSE"
    gdb_test "p 10.d20 < 10.d21" " = TRUE"
    gdb_test "p 10.d20 > 10.d21" " = FALSE"
    gdb_test "p 10.E20 < 10.E21" " = TRUE"
    gdb_test "p 10.E20 > 10.E21" " = FALSE"
    gdb_test "p 10.e20 < 10.e21" " = TRUE"
    gdb_test "p 10.e20 > 10.e21" " = FALSE"
    gdb_test "p 10.0D20 < 10.0D21" " = TRUE"
    gdb_test "p 10.0D20 > 10.0D21" " = FALSE"
    gdb_test "p 10.0d20 < 10.0d21" " = TRUE"
    gdb_test "p 10.0d20 > 10.0d21" " = FALSE"
    gdb_test "p 10.0E20 < 10.0E21" " = TRUE"
    gdb_test "p 10.0E20 > 10.0E21" " = FALSE"
    gdb_test "p 10.0e20 < 10.0e21" " = TRUE"
    gdb_test "p 10.0e20 > 10.0e21" " = FALSE"
    gdb_test "p 10.0D+20 < 10.0D+21" " = TRUE"
    gdb_test "p 10.0D+20 > 10.0D+21" " = FALSE"
    gdb_test "p 10.0d+20 < 10.0d+21" " = TRUE"
    gdb_test "p 10.0d+20 > 10.0d+21" " = FALSE"
    gdb_test "p 10.0E+20 < 10.0E+21" " = TRUE"
    gdb_test "p 10.0E+20 > 10.0E+21" " = FALSE"
    gdb_test "p 10.0e+20 < 10.0e+21" " = TRUE"
    gdb_test "p 10.0e+20 > 10.0e+21" " = FALSE"
    gdb_test "p 10.0D-11 < 10.0D-10" " = TRUE"
    gdb_test "p 10.0D-11 > 10.0D-10" " = FALSE"
    gdb_test "p 10.0d-11 < 10.0d-10" " = TRUE"
    gdb_test "p 10.0d-11 > 10.0d-10" " = FALSE"
    gdb_test "p 10.0E-11 < 10.0E-10" " = TRUE"
    gdb_test "p 10.0E-11 > 10.0E-10" " = FALSE"
    gdb_test "p 10.0e-11 < 10.0e-10" " = TRUE"
    gdb_test "p 10.0e-11 > 10.0e-10" " = FALSE"
    # looks funny, but apparently legal
    gdb_test "p _.1e+10 < _.1e+11" " = TRUE"
    gdb_test "p _.1e+10 > _.1e+11" " = FALSE"
    gdb_test "p __.1e-12 < __.1e-11" " = TRUE"
    gdb_test "p __.1e-12 > __.1e-11" " = FALSE"
}

proc test_convenience_variables {} {
    global gdb_prompt

    gdb_test "set \$foo := 101"	" := 101\[\r\]*" \
	"Set a new convenience variable"

    gdb_test "print \$foo"		" = 101" \
	"Print contents of new convenience variable"

    gdb_test "set \$foo := 301"	" := 301\[\r\]*" \
	"Set convenience variable to a new value"

    gdb_test "print \$foo"		" = 301" \
	"Print new contents of convenience variable"

    gdb_test "set \$_ := 11"		" := 11\[\r\]*" \
	"Set convenience variable \$_"

    gdb_test "print \$_"		" = 11" \
	"Print contents of convenience variable \$_"

    gdb_test "print \$foo + 10"	" = 311" \
	"Use convenience variable in arithmetic expression"

    gdb_test "print (\$foo := 32) + 4"	" = 36" \
	"Use convenience variable assignment in arithmetic expression"

    gdb_test "print \$bar"		" = void" \
	"Print contents of uninitialized convenience variable"
}

proc test_value_history {} {
    global gdb_prompt

    gdb_test "print 101"	"\\\$1 = 101" \
	"Set value-history\[1\] using \$1"

    gdb_test "print 102" 	"\\\$2 = 102" \
	"Set value-history\[2\] using \$2"

    gdb_test "print 103"	"\\\$3 = 103" \
	"Set value-history\[3\] using \$3"

    gdb_test "print \$\$"	"\\\$4 = 102" \
	"Print value-history\[MAX-1\] using inplicit index \$\$"

    gdb_test "print \$\$"	"\\\$5 = 103" \
	"Print value-history\[MAX-1\] again using implicit index \$\$"

    gdb_test "print \$"	"\\\$6 = 103" \
	"Print value-history\[MAX\] using implicit index \$"

    gdb_test "print \$\$2"	"\\\$7 = 102" \
	"Print value-history\[MAX-2\] using explicit index \$\$2"

    gdb_test "print \$0"	"\\\$8 = 102" \
	"Print value-history\[MAX\] using explicit index \$0"

    gdb_test "print 108"	"\\\$9 = 108" ""

    gdb_test "print \$\$0"	"\\\$10 = 108" \
	"Print value-history\[MAX\] using explicit index \$\$0"

    gdb_test "print \$1"	"\\\$11 = 101" \
	"Print value-history\[1\] using explicit index \$1"

    gdb_test "print \$2"	"\\\$12 = 102" \
	"Print value-history\[2\] using explicit index \$2"

    gdb_test "print \$3"	"\\\$13 = 103" \
	"Print value-history\[3\] using explicit index \$3"

    gdb_test "print \$-3"	"\\\$14 = 100" \
	"Print (value-history\[MAX\] - 3) using implicit index \$"

    gdb_test "print \$1 + 3"	"\\\$15 = 104" \
	"Use value-history element in arithmetic expression"
}

proc test_arithmetic_expressions {} {
    global gdb_prompt

    # Test unary minus with various operands

#    gdb_test "p -(TRUE)"	" = -1"	"unary minus applied to bool"
#    gdb_test "p -('a')"	" = xxx"	"unary minus applied to char"
    gdb_test "p -(1)"		" = -1"	"unary minus applied to int"
    gdb_test "p -(1.0)"	" = -1"	"unary minus applied to real"

    # Test addition with various operands

    gdb_test "p TRUE + 1"	" = 2"	"bool plus int"
    gdb_test "p 'a' + 1"	" = 98"	"char plus int"
    gdb_test "p 1 + 1"		" = 2"	"int plus int"
    gdb_test "p 1.0 + 1"	" = 2"	"real plus int"
    gdb_test "p 1.0 + 2.0"	" = 3"	"real plus real"

    # Test subtraction with various operands

    gdb_test "p TRUE - 1"	" = 0"	"bool minus int"
    gdb_test "p 'b' - 1"	" = 97"	"char minus int"
    gdb_test "p 3 - 1"		" = 2"	"int minus int"
    gdb_test "p 3.0 - 1"	" = 2"	"real minus int"
    gdb_test "p 5.0 - 2.0"	" = 3"	"real minus real"

    # Test multiplication with various operands

    gdb_test "p TRUE * 1"	" = 1"	"bool times int"
    gdb_test "p 'a' * 2"	" = 194"	"char times int"
    gdb_test "p 2 * 3"		" = 6"	"int times int"
    gdb_test "p 2.0 * 3"	" = 6"	"real times int"
    gdb_test "p 2.0 * 3.0"	" = 6"	"real times real"

    # Test division with various operands

    gdb_test "p TRUE / 1"	" = 1"	"bool divided by int"
    gdb_test "p 'a' / 2"	" = 48"	"char divided by int"
    gdb_test "p 6 / 3"		" = 2"	"int divided by int"
    gdb_test "p 6.0 / 3"	" = 2"	"real divided by int"
    gdb_test "p 6.0 / 3.0"	" = 2"	"real divided by real"

    # Test modulo with various operands

    gdb_test "p TRUE MOD 1"	" = 0"	"bool modulo int"
    gdb_test "p 'a' MOD 2"	" = 1"	"char modulo int"
    gdb_test "p -5 MOD 3"	" = 1"	"negative int modulo int"
    gdb_test "p 5 MOD 1"	" = 0"	"int modulo int"
    gdb_test "p 5 MOD 2"	" = 1"	"int modulo int"
    gdb_test "p 5 MOD 3"	" = 2"	"int modulo int"
    gdb_test "p 5 MOD 4"	" = 1"	"int modulo int"
    gdb_test "p 5 MOD 5"	" = 0"	"int modulo int"
    gdb_test "p 0 MOD 1"	" = 0"	"int modulo int"
    gdb_test "p 0 MOD 2"	" = 0"	"int modulo int"
    gdb_test "p 0 MOD 3"	" = 0"	"int modulo int"
    gdb_test "p 0 MOD 4"	" = 0"	"int modulo int"
    gdb_test "p -5 MOD 1"	" = 0"	"int modulo int"
    gdb_test "p -5 MOD 2"	" = 1"	"int modulo int"
    gdb_test "p -5 MOD 3"	" = 1"	"int modulo int"
    gdb_test "p -5 MOD 4"	" = 3"	"int modulo int"
    gdb_test "p -5 MOD 5"	" = 0"	"int modulo int"
    gdb_test "p -5 MOD 5"	" = 0"	"int modulo int"
    test_print_reject "p 6.0 MOD 3" \
	"Integer-only operation on floating point number.*"
    test_print_reject "p 6.0 MOD 3.0" \
	"Integer-only operation on floating point number.*"
    test_print_reject "p -5 MOD -1" \
	"Second operand of MOD must be greater than zero.*"
    test_print_reject "p -5 MOD 0" \
	"Second operand of MOD must be greater than zero.*"

    # Test remainder with various operands

    gdb_test "p TRUE REM 1"	" = 0"	"bool remainder int"
    gdb_test "p 'a' REM 2"	" = 1"	"char remainder int"
    gdb_test "p 5 REM 5"	" = 0"	"int remainder int"
    gdb_test "p 5 REM 4"	" = 1"	"int remainder int"
    gdb_test "p 5 REM 3"	" = 2"	"int remainder int"
    gdb_test "p 5 REM 2"	" = 1"	"int remainder int"
    gdb_test "p 5 REM 1"	" = 0"	"int remainder int"
    gdb_test "p 5 REM -1"	" = 0"	"int remainder int"
    gdb_test "p 5 REM -2"	" = 1"	"int remainder int"
    gdb_test "p 5 REM -3"	" = 2"	"int remainder int"
    gdb_test "p 5 REM -4"	" = 1"	"int remainder int"
    gdb_test "p 5 REM -5"	" = 0"	"int remainder int"
    gdb_test "p -5 REM 5"	" = 0"	"int remainder int"
    gdb_test "p -5 REM 4"	" = -1"	"int remainder int"
    gdb_test "p -5 REM 3"	" = -2"	"int remainder int"
    gdb_test "p -5 REM 2"	" = -1"	"int remainder int"
    gdb_test "p -5 REM 1"	" = 0"	"int remainder int"
    gdb_test "p -5 REM -1"	" = 0"	"int remainder int"
    gdb_test "p -5 REM -2"	" = -1"	"int remainder int"
    gdb_test "p -5 REM -3"	" = -2"	"int remainder int"
    gdb_test "p -5 REM -4"	" = -1"	"int remainder int"
    gdb_test "p -5 REM -5"	" = 0"	"int remainder int"
    gdb_test "p 6 REM 3"	" = 0"	"int remainder int"
    test_print_reject "p 6.0 REM 3" \
	"Integer-only operation on floating point number.*"
    test_print_reject "p 6.0 REM 3.0" \
	"Integer-only operation on floating point number.*"
}

# Start with a fresh gdb.

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir

gdb_test "set print sevenbit-strings" ""

if [set_lang_chill] then {
    test_value_history
    test_convenience_variables
    test_integer_literals_accepted
    test_integer_literals_rejected
    test_boolean_literals_accepted
    test_character_literals_accepted
    test_float_literals_accepted
    test_arithmetic_expressions
} else {
    warning "$test_name tests suppressed." 0
}
