# OBSOLETE # Copyright 1995, 1996, 1997 Free Software Foundation, Inc.
# OBSOLETE 
# OBSOLETE # This program is free software; you can redistribute it and/or modify
# OBSOLETE # it under the terms of the GNU General Public License as published by
# OBSOLETE # the Free Software Foundation; either version 2 of the License, or
# OBSOLETE # (at your option) any later version.
# OBSOLETE # 
# OBSOLETE # This program is distributed in the hope that it will be useful,
# OBSOLETE # but WITHOUT ANY WARRANTY; without even the implied warranty of
# OBSOLETE # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# OBSOLETE # GNU General Public License for more details.
# OBSOLETE # 
# OBSOLETE # You should have received a copy of the GNU General Public License
# OBSOLETE # along with this program; if not, write to the Free Software
# OBSOLETE # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
# OBSOLETE 
# OBSOLETE # Please email any bugs, comments, and/or additions to this file to:
# OBSOLETE # bug-gdb@prep.ai.mit.edu
# OBSOLETE 
# OBSOLETE # This file tests various Chill values, expressions, and types.
# OBSOLETE 
# OBSOLETE # This file was written by Wilfried Moser (moser@aut.alcatel.at)
# OBSOLETE #			   Kurt Fuchs (fuchs_k@aut.alcatel.at)
# OBSOLETE #
# OBSOLETE 
# OBSOLETE if $tracelevel then {
# OBSOLETE 	strace $tracelevel
# OBSOLETE }
# OBSOLETE 
# OBSOLETE if [skip_chill_tests] then { continue }
# OBSOLETE 
# OBSOLETE set testfile "gch981"
# OBSOLETE set srcfile ${srcdir}/$subdir/${testfile}.ch
# OBSOLETE set binfile ${objdir}/${subdir}/${testfile}.exe
# OBSOLETE if  { [compile "${srcfile} -g -w -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
# OBSOLETE     perror "Couldn't compile ${srcfile}"
# OBSOLETE     return -1
# OBSOLETE }
# OBSOLETE 
# OBSOLETE # Set the current language to chill.  This counts as a test.  If it
# OBSOLETE # fails, then we skip the other tests.
# OBSOLETE 
# OBSOLETE proc set_lang_chill {} {
# OBSOLETE     global gdb_prompt
# OBSOLETE     global binfile objdir subdir
# OBSOLETE 
# OBSOLETE     verbose "loading file '$binfile'"
# OBSOLETE     gdb_load $binfile
# OBSOLETE     send_gdb "set language chill\n"
# OBSOLETE     gdb_expect {
# OBSOLETE 	-re ".*$gdb_prompt $" {}
# OBSOLETE 	timeout { fail "set language chill (timeout)" ; return 0 }
# OBSOLETE     }
# OBSOLETE 
# OBSOLETE     send_gdb "show language\n"
# OBSOLETE     gdb_expect {
# OBSOLETE 	-re ".* source language is \"chill\".*$gdb_prompt $" {
# OBSOLETE 	    pass "set language to \"chill\""
# OBSOLETE 	    send_gdb "break xx_\n"
# OBSOLETE 	    gdb_expect {
# OBSOLETE 		-re ".*$gdb_prompt $" {
# OBSOLETE 		    send_gdb "run\n" 
# OBSOLETE 		    gdb_expect -re ".*$gdb_prompt $" {}
# OBSOLETE 		    return 1
# OBSOLETE 		}
# OBSOLETE 		timeout {
# OBSOLETE 		    fail "can't set breakpoint (timeout)"
# OBSOLETE 		    return 0
# OBSOLETE 		}
# OBSOLETE 	    }
# OBSOLETE 	}
# OBSOLETE 	-re ".*$gdb_prompt $" {
# OBSOLETE 	    fail "setting language to \"chill\""
# OBSOLETE 	    return 0
# OBSOLETE 	}
# OBSOLETE 	timeout {
# OBSOLETE 	    fail "can't show language (timeout)"
# OBSOLETE 	    return 0
# OBSOLETE 	}
# OBSOLETE     }
# OBSOLETE }
# OBSOLETE 
# OBSOLETE # Testing printing of a specific value.  Increment passcount for
# OBSOLETE # success or issue fail message for failure.  In both cases, return
# OBSOLETE # a 1 to indicate that more tests can proceed.  However a timeout
# OBSOLETE # is a serious error, generates a special fail message, and causes
# OBSOLETE # a 0 to be returned to indicate that more tests are likely to fail
# OBSOLETE # as well.
# OBSOLETE #
# OBSOLETE # Args are:
# OBSOLETE #
# OBSOLETE #	First one is string to send_gdb to gdb
# OBSOLETE #	Second one is string to match gdb result to
# OBSOLETE #	Third one is an optional message to be printed
# OBSOLETE 
# OBSOLETE proc test_print_accept { args } {
# OBSOLETE     global gdb_prompt
# OBSOLETE     global passcount
# OBSOLETE     global verbose
# OBSOLETE 
# OBSOLETE     if [llength $args]==3 then {
# OBSOLETE 	set message [lindex $args 2]
# OBSOLETE     } else {
# OBSOLETE 	set message [lindex $args 0]
# OBSOLETE     }
# OBSOLETE     set sendthis [lindex $args 0]
# OBSOLETE     set expectthis [lindex $args 1]
# OBSOLETE     set result [gdb_test $sendthis ".* = ${expectthis}" $message]
# OBSOLETE     if $result==0 {incr passcount}
# OBSOLETE     return $result
# OBSOLETE }
# OBSOLETE 
# OBSOLETE proc test_power {} {
# OBSOLETE     global passcount gdb_prompt
# OBSOLETE 
# OBSOLETE     verbose "Testing some POWERSET Stuff"
# OBSOLETE     set passcount 0
# OBSOLETE 
# OBSOLETE     test_print_accept "print v1_power1" {\[e1:e5\]}
# OBSOLETE     test_print_accept "print v2_power1" {\[\]}
# OBSOLETE     test_print_accept "print SIZE(v1_power1)" "1"
# OBSOLETE 
# OBSOLETE     gdb_test "set v1_power1 := \[b1\]"  ""
# OBSOLETE #   if GDB has rejected the improper values, we have to gdb_expect the same!
# OBSOLETE     test_print_accept "print v1_power1" {\[e1:e5\]}
# OBSOLETE 
# OBSOLETE     gdb_test "set v1_power1 := \[a1,a2\]"  ""
# OBSOLETE     test_print_accept "print v1_power1" {\[e1:e5\]}
# OBSOLETE     gdb_test "set v1_power1 := \[b1,b2,b3,e4\]"  ""
# OBSOLETE     test_print_accept "print v1_power1" {\[e1:e5\]}
# OBSOLETE     gdb_test "set v1_power1 := \[e4:e5\]"  ""
# OBSOLETE     test_print_accept "print v1_power1" {\[e4:e5\]}
# OBSOLETE     gdb_test "set v1_power1 := \[e1, e2:e3, e5\]"  ""
# OBSOLETE     test_print_accept "print v1_power1" {\[e1:e3, e5\]}
# OBSOLETE     gdb_test "set v1_power1 := \[e1, e2:e4, e4:e5\]"  ""
# OBSOLETE     test_print_accept "print v1_power1" {\[e1:e5\]}
# OBSOLETE     gdb_test "set v1_power1 := \[e1, e1:e3, e1:e2, e2:e3\]"  ""
# OBSOLETE     test_print_accept "print v1_power1" {\[e1:e3\]}
# OBSOLETE 
# OBSOLETE     gdb_test "set v_power2 := \[e2\]"  ""
# OBSOLETE     test_print_accept "print v_power2" {\[\]}
# OBSOLETE     gdb_test "set v_power2 := \[1,2,3\]"  ""
# OBSOLETE     test_print_accept "print v_power2" {\[\]}
# OBSOLETE     gdb_test "set v_power2 := \[e2, b2, b1\]"  ""
# OBSOLETE     test_print_accept "print v_power2" {\[\]}
# OBSOLETE 
# OBSOLETE # Note, that this is a numbered SET, so a1:a3 contains all elements (exept a6)
# OBSOLETE     gdb_test "set v_power2 := \[a1:a3, a6:a4, a7:a9\]"  ""
# OBSOLETE     test_print_accept "print v_power2" {\[a6:a3\]}
# OBSOLETE     gdb_test "set v_power2 := \[a1, a4:a6, a9\]"  ""
# OBSOLETE     test_print_accept "print v_power2" {\[a1, a9\]}
# OBSOLETE     gdb_test "set v_power2 := \[a1:a2, a6, a9\]"  ""
# OBSOLETE     test_print_accept "print v_power2" {\[a6:a2, a9\]}
# OBSOLETE     gdb_test "set v_power2 := \[a1, a4, a7:a8, a9:a3\]"  ""
# OBSOLETE     test_print_accept "print v_power2" {\[a1, a4, a9:a8\]}
# OBSOLETE     gdb_test "set v_power2 := \[a1, a4:a8\]"  ""
# OBSOLETE     test_print_accept "print v_power2" {\[a1, a4:a8\]}
# OBSOLETE     gdb_test "set v_power2 := \[a8,a3,a7,a9,a5,a6\]"  ""
# OBSOLETE     test_print_accept "print v_power2" {\[a6, a5, a9, a7, a3, a8\]}
# OBSOLETE 
# OBSOLETE     gdb_test "set v_power3 := \[b1:b2,e1\]"  ""
# OBSOLETE     test_print_accept "print v_power3" {\[b1:b2\]}
# OBSOLETE     gdb_test "set v_power3 := \[b1, b3, b6:b7\]"  ""
# OBSOLETE     test_print_accept "print v_power3" {\[b1, b3, b6:b7\]}
# OBSOLETE     gdb_test "set v_power3 := \[b1, b3:b4, b7\]"  ""
# OBSOLETE     test_print_accept "print v_power3" {\[b1, b3:b4, b7\]}
# OBSOLETE     gdb_test "set v_power3 := \[b1, b4:b6, b7\]"  ""
# OBSOLETE     test_print_accept "print v_power3" {\[b1, b4:b7\]}
# OBSOLETE     gdb_test "set v_power3 := \[b1:b7\]"  ""
# OBSOLETE     test_print_accept "print v_power3" {\[b1:b7\]}
# OBSOLETE     gdb_test "set v_power3 := \[b5:b7, b1\]"  ""
# OBSOLETE     test_print_accept "print v_power3" {\[b1, b5:b7\]}
# OBSOLETE 
# OBSOLETE     gdb_test "set v_power4 := \[\"b\"\]" ""
# OBSOLETE     test_print_accept "print v_power4" {\['b':'x'\]}
# OBSOLETE     gdb_test "set v_power4 := \[5\]"  ""
# OBSOLETE     test_print_accept "print v_power4" {\['b':'x'\]}
# OBSOLETE     gdb_test "set v_power4 := \['c':'f','g':'h','o':'t'\]" ""
# OBSOLETE     test_print_accept "print v_power4" {\['c':'h', 'o':'t'\]}
# OBSOLETE     gdb_test "set v_power4 := \['a','b','c','d','e','f'\]" ""
# OBSOLETE     test_print_accept "print v_power4" {\['a':'f'\]}
# OBSOLETE     gdb_test "set v_power4 := \['\^(0)':'\^(200)'\]" ""
# OBSOLETE     test_print_accept "print v_power4" {\['\^\(0\)':'\^\(200\)'\]}
# OBSOLETE 
# OBSOLETE     gdb_test "set v_power5 := \[a8\]"  ""
# OBSOLETE     test_print_accept "print v_power5" {\[2:100\]}
# OBSOLETE     gdb_test "set v_power5 := \[4\]"  ""
# OBSOLETE     test_print_accept "print v_power5" {\[4\]}
# OBSOLETE     gdb_test "set v_power5 := \[3:95,9:100,10:107,200:250\]" ""
# OBSOLETE     test_print_accept "print v_power5" {\[3:107, 200:250\]}
# OBSOLETE     gdb_test "set v_power5 := \[2, 100:120, 350:400\]"  ""
# OBSOLETE     test_print_accept "print v_power5" {\[2, 100:120, 350:400\]}
# OBSOLETE     gdb_test "set v_power5 := \[2:64,65:127,128:256,256:399,400\]" ""
# OBSOLETE     test_print_accept "print v_power5" {\[2:400\]}
# OBSOLETE     gdb_test "set v_power5 := \[3:95, 99:100, 101:107, 200:250\]"  ""
# OBSOLETE     test_print_accept "print v_power5" {\[3:95, 99:107, 200:250\]}
# OBSOLETE 
# OBSOLETE     gdb_test "set v_power6 := \[a8\]"  ""
# OBSOLETE     test_print_accept "print v_power6" {\[\]}
# OBSOLETE     gdb_test "set v_power6 := \[4\]"  ""
# OBSOLETE     test_print_accept "print v_power6" {\[4\]}
# OBSOLETE     gdb_test "set v_power6 := \[3:95, 99:100, 101:107, 200:250\]"  ""
# OBSOLETE     test_print_accept "print v_power6" {\[3:95, 99:107, 200:250\]}
# OBSOLETE     gdb_test "set v_power6 := \[-111:0, 1:112, 11111:22222\]"  ""
# OBSOLETE     test_print_accept "print v_power6" {\[-111:112, 11111:22222\]}
# OBSOLETE     gdb_test "set v_power6 := \[0, 200:4000, 6666:9999\]"  ""
# OBSOLETE     test_print_accept "print v_power6" {\[0, 200:4000, 6666:9999\]}
# OBSOLETE 
# OBSOLETE #    gdb_test "set v_power7 := \[a8\]"  ""
# OBSOLETE #    test_print_accept "print v_power7" {\[2:100\]}
# OBSOLETE #    gdb_test "set v_power7 := \[4\]"  ""
# OBSOLETE #    test_print_accept "print v_power7" {\[4\]}
# OBSOLETE #    gdb_test "set v_power7 := \[3:95, 99:100, 101:107, 200:250\]" ""
# OBSOLETE #    test_print_accept "print v_power7" {\[3:95, 99:107, 200:250\]}
# OBSOLETE #    gdb_test "set v_power7 := \[0, 1000, 1000000, 10000000000\]"  ""
# OBSOLETE #    test_print_accept "print v_power7" {\[0, 1000, 1000000, 1000000000\]}
# OBSOLETE #    gdb_test "set v_power7 := \[-20000:100000, 111111:2222222\]"  ""
# OBSOLETE #    test_print_accept "print v_power7" {\[-20000:100000, 111111:2222222\]}
# OBSOLETE #    gdb_test "set v_power7 := \[\]"  ""
# OBSOLETE #    test_print_accept "print v_power7" {\[3:95, 99:107, 200:250\]}
# OBSOLETE #    gdb_test "set v_power7 := \[2:-500, -501:1, 20:370, -888:-920, 1000:2000, 1800:2500\]\ " ""
# OBSOLETE #    test_print_accept "print v_power7" {\[-920:-888, -501:2, 20:370, 1000:2500\]}
# OBSOLETE #    test_print_accept "print SIZE(v_power7)" ""
# OBSOLETE 
# OBSOLETE 
# OBSOLETE     runto 58
# OBSOLETE     test_print_accept "print v_set1 IN v1_power1" "TRUE"
# OBSOLETE     test_print_accept "print v_set1 IN v2_power1" "FALSE"
# OBSOLETE 
# OBSOLETE }
# OBSOLETE 
# OBSOLETE 
# OBSOLETE 
# OBSOLETE # Start with a fresh gdb.
# OBSOLETE 
# OBSOLETE gdb_exit
# OBSOLETE gdb_start
# OBSOLETE gdb_reinitialize_dir $srcdir/$subdir
# OBSOLETE 
# OBSOLETE gdb_test "set print sevenbit-strings" ".*"
# OBSOLETE 
# OBSOLETE 
# OBSOLETE if [set_lang_chill] then {
# OBSOLETE     # test builtins as described in chapter 6.20.3 Z.200
# OBSOLETE 
# OBSOLETE     test_power 
# OBSOLETE } else {
# OBSOLETE     warning "$test_name tests suppressed."
# OBSOLETE }
