aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.chill/tuples.exp
blob: eda79da299867763b6ec2d210d4f8106cb29d471 (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
# Copyright (C) 1995 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
}

proc do_tests {} {
    global prms_id bug_id subdir objdir srcdir binfile 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 $objdir/$subdir/$binfile

    send "set language chill\n" ; expect -re "$prompt $"

    runto tuples.ch:40

    gdb_test_exact "print v_arri" {= [(1): -1, (2): -2, (3): -3, (4): -4, (5): -5]}
    send "set v_arri := \[ 33, 44, 55, 66, 77 \]\n" ;  expect -re "$prompt $"
    gdb_test_exact "print v_arri" {= [(1): 33, (2): 44, (3): 55, (4): 66, (5): 77]} "after assignment 1 to v_arri"
    send "set v_arri := \[-33, -44, -55, -66, -77\]\n";  expect -re "$prompt $"
    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]}
    send "set v_arrui := \[ 11, 11, 11, 11, 11 \]\n";  expect -re "$prompt $"
    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]}

    send "set v_arrb := \[ -9, -8, -7, -6, -5 \]\n";  expect -re "$prompt $"
    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]}
    send "set v_arrub := \[ 77, 77, 77, 77, 77 \]\n";  expect -re "$prompt $"
    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']}
    send "set v_arrc := \[ 'a', 'b', 'c', 'd', 'e' \]\n";  expect -re "$prompt $"
    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]}
    send "set v_ps := \[ 2, 4 \]\n";  expect -re "$prompt $"
    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"}
   send "set v_cv := \"foo-bar\"\n";  expect -re "$prompt $"
   gdb_test_exact "print v_cv" {= "foo-bar"} "v_cv after assignment"
   send "print v_cv(3) := ' '\n";  expect -re "$prompt $"
   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]}
   send "set v_arrbool := \[ false, false, false, false, false \]\n"
   expect -re "$prompt $"
   gdb_test_exact "print v_arrbool" {= [(1:5): FALSE]} "v_arrbool after assignment 1"
   send "set v_arrbool := \[true, true, true, true, true\]\n"
   expect -re "$prompt $"
   gdb_test_exact "print v_arrbool" {= [(1:5): TRUE]} "v_arrbool after assignment 2"
   send "set v_arrbool(3) := false\n";  expect -re "$prompt $"
   gdb_test_exact "print v_arrbool" {= [(1:2): TRUE, (3): FALSE, (4:5): TRUE]} "v_arrbool after element assignment"

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

   send "set vstr := \[ .a: 2+3, .b: 12, .ch1: 'x' \]\n"
   expect -re "$prompt $"
   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:
    send "break printdow\n" ; expect -re "$prompt $"
    send "continue\n" ; expect -re "$prompt $"
    send "set var w:= dow\[monday\]\n" ; expect -re "$prompt $"
    gdb_test "print w" " = \\\[monday\\\]" \
	"print bitstring after assignment"
    send "set var w:=\[\]\n" ; expect -re "$prompt $"
    gdb_test "print w" " = \\\[\\\]" \
	"print bitstring after assignment of \[\]"
}

# Check to see if we have an executable to test.  If not, then either we
# haven't tried to compile one, or the compilation failed for some reason.
# In either case, just notify the user and skip the tests in this file.

set binfile "tuples.exe"
set srcfile $binfile.ch

if [skip_chill_tests] then { continue }

if ![file exists $objdir/$subdir/$binfile] then {
    warning "$binfile does not exist; tests suppressed."
} else {
    do_tests
}