summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.chill/tuples.exp
blob: 0efea79eaa9d0a9d94feaed869d3ab9617c56799 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Copyright 1995, 1996 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 Per Bothner. (bothner@cygnus.com)

if $tracelevel then {
	strace $tracelevel
}

if [skip_chill_tests] then { continue }

set testfile "tuples"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if  { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
    perror "Couldn't compile ${srcfile}"
    return -1
}

proc do_tests {} {
    global prms_id bug_id subdir objdir srcdir binfile gdb_prompt

    set prms_id 0
    set bug_id 0

    # Start with a fresh gdb.

    gdb_exit
    gdb_start
    gdb_reinitialize_dir $srcdir/$subdir
    gdb_load $binfile

    gdb_test "set language chill" ""

    runto tuples.ch:40

    gdb_test_exact "print v_arri" {= [(1): -1, (2): -2, (3): -3, (4): -4, (5): -5]}
    gdb_test_exact "set v_arri := \[ 33, 44, 55, 66, 77 \]" {}
    gdb_test_exact "print v_arri" {= [(1): 33, (2): 44, (3): 55, (4): 66, (5): 77]} "after assignment 1 to v_arri"
    gdb_test_exact "set v_arri := \[-33, -44, -55, -66, -77\]" {}
    gdb_test_exact "print v_arri" {= [(1): -33, (2): -44, (3): -55, (4): -66, (5): -77]} {after assignment 2 to v_arri}

    gdb_test_exact "print v_arrui" {= [(1): 1, (2): 2, (3): 3, (4): 4, (5): 5]}
    gdb_test_exact "set v_arrui := \[ 11, 11, 11, 11, 11 \]" {}
    gdb_test_exact "print v_arrui" {= [(1:5): 11]} "after assignment to v_arrui"

    gdb_test_exact "print v_arrb" {= [(1): -3, (2): -4, (3): -5, (4): -6, (5): -7]}

    gdb_test_exact "set v_arrb := \[ -9, -8, -7, -6, -5 \]" {}
    gdb_test_exact "print v_arrb" {= [(1): -9, (2): -8, (3): -7, (4): -6, (5): -5]} "after assignment to v_arrb"

    gdb_test_exact "print v_arrub" {= [(1): 3, (2): 4, (3): 5, (4): 6, (5): 7]}
    gdb_test_exact "set v_arrub := \[ 77, 77, 77, 77, 77 \]" {}
    gdb_test_exact "print v_arrub" {= [(1:5): 77]} "v_arrub after assignment"

    gdb_test_exact "print j" {= 4}
    gdb_test_exact "print j := 3+4" {= 7}
    gdb_test_exact "print j := r1(3)" {= 3}

    gdb_test_exact "print v_arrc" {= [(1): '1', (2): '2', (3): '3', (4): '4', (5): '5']}
    gdb_test_exact "set v_arrc := \[ 'a', 'b', 'c', 'd', 'e' \]" {}
    gdb_test_exact "print v_arrc" {= [(1): 'a', (2): 'b', (3): 'c', (4): 'd', (5): 'e']} "v_arrc after assignment"

    gdb_test_exact "print v_ps" {= [1, 3, 5]}
    gdb_test_exact "set v_ps := \[ 2, 4 \]" {}
    gdb_test_exact "print v_ps" {= [2, 4]} {v_ps after assignment}
    gdb_test_exact "print v_ps :=  \[\]" {= []} {assign [] to v_ps}

    gdb_test_exact "print m_arri\[1, 2, 3, 4, 5\]" {= [(1): 1, (2): 2, (3): 3, (4): 4, (5): 5]}
    gdb_test_exact "print m_arrub\[45, 46, 47, 48, 49\]" {= [(1): 45, (2): 46, (3): 47, (4): 48, (5): 49]}

   gdb_test_exact "print v_cv" {= "foo"}
   gdb_test_exact "set v_cv := \"foo-bar\"" {}
   gdb_test_exact "print v_cv" {= "foo-bar"} "v_cv after assignment"
   gdb_test_exact "set v_cv(3) := ' '" {}
   gdb_test_exact "print v_cv" {= "foo bar"} "v_cv after element assignment"

   gdb_test_exact "print v_arrbool" {= [(1): TRUE, (2): FALSE, (3): TRUE, (4): FALSE, (5): TRUE]}
   gdb_test_exact "set v_arrbool := \[ false, false, false, false, false \]" {}
   gdb_test_exact "print v_arrbool" {= [(1:5): FALSE]} "v_arrbool after assignment 1"
   gdb_test_exact "set v_arrbool := \[true, true, true, true, true\]" {}
   gdb_test_exact "print v_arrbool" {= [(1:5): TRUE]} "v_arrbool after assignment 2"
   gdb_test_exact "set v_arrbool(3) := false" {}
   gdb_test_exact "print v_arrbool" {= [(1:2): TRUE, (3): FALSE, (4:5): TRUE]} "v_arrbool after element assignment"

   gdb_test_exact "set v_arrbool(1 up 2) := \[ false, true \]" {}
   gdb_test_exact "print v_arrbool" {= [(1): FALSE, (2): TRUE, (3): FALSE, (4:5): TRUE]} "v_arrbool after slice assignment 1"
   gdb_test_exact "set v_arrbool(3 : 5) := \[ true, true, false \]" {}
   gdb_test_exact "print v_arrbool" {= [(1): FALSE, (2:4): TRUE, (5): FALSE]} "v_arrbool after slice assignment 2"

   gdb_test_exact "set vstr := \[ .a: 2+3, .b: 12, .ch1: 'x' \]" {}
   gdb_test_exact "print vstr.a" {= 5} "vstr.a after assignment"
   gdb_test_exact "print vstr.ch1" {= 'x'} "vstr.ch1 after assignment"

#   These tests are from Cygnus PR chill/5024:
    gdb_test "break printdow" ""
    gdb_test "continue" ""
    gdb_test_exact "set var w:= dow\[monday\]" {}
    gdb_test "print w" " = \\\[monday\\\]" \
	"print bitstring after assignment"
    gdb_test_exact "set var w:=\[\]" {}
    gdb_test "print w" " = \\\[\\\]" \
	"print bitstring after assignment of \[\]"

#   These tests are from Cygnus PR chill/8643:
    runto tuples.ch:40
    gdb_test_exact "set var vs1 := \[ \"foo\", 41, \[ b \] \]"  {}
    gdb_test_exact "print vs1" { = [.str: "foo", .i: 41, .ps: [b]]} \
	"print vs1 after tuple assign 1"
    setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
    gdb_test_exact "set var vs1 := \[ \"bar\", 42, m_ps\[ a \] \]" {}
    setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
    gdb_test_exact "print vs1" { = [.str: "bar", .i: 42, .ps: [a]]} \
	"print vs1 after tuple assign 2"

    gdb_test_exact "set var \$i := m_s1\[\"foo\", 42, \[a \]\]" {}
    gdb_test_exact {print $i} { = [.str: "foo", .i: 42, .ps: [a]]} \
	"print \$i after tuple assign 1"
    setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
    gdb_test_exact "set var \$i := m_s1\[\"foo\", 44, m_ps\[a \]\]" {}
    setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
    gdb_test_exact {print $i} { = [.str: "foo", .i: 44, .ps: [a]]} \
	"print \$i after tuple assign 2"

    gdb_test_exact "set var vs2 := \[ 10, \[ \"foo\" , 42, \[ b \] \] \]" {}
    gdb_test_exact "print vs2" \
	{ = [.i: 10, .s: [.str: "foo", .i: 42, .ps: [b]]]} \
	"print vs2 after tuple assign 1"
    setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
    gdb_test_exact "set var vs2 := \[ 10+3, m_s1\[ \"foo\" , 42, m_ps\[ b \] \] \]" {}
    setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
    gdb_test_exact "print vs2" \
	{ = [.i: 13, .s: [.str: "foo", .i: 42, .ps: [b]]]} \
	"print vs2 after tuple assign 2"

    gdb_test_exact "set var vs3 := \[ 33, \[ -1, -2, -3 \] \]" {}
    gdb_test_exact "print vs3" {[.i: 33, .a: [(1): -1, (2): -2, (3): -3]]} \
	"print vs3 after tuple assign"
    gdb_test_exact "set var \$k := m_s3\[ 33, m_arr\[ 4, 3, 2 \] \]" {}
    gdb_test_exact {print $k} { = [.i: 33, .a: [(1): 4, (2): 3, (3): 2]]} \
	"print \$k after tuple assign"

}

do_tests