OSDN Git Service

Add Go frontend, libgo library, and Go testsuite.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / go.test / test / ken / slicearray.go
1 // $G $D/$F.go && $L $F.$A && ./$A.out
2
3 // Copyright 2009 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
6
7 package main
8
9 var bx [10]byte
10 var by []byte
11 var fx [10]float
12 var fy []float
13 var lb, hb int
14 var t int
15
16 func main() {
17         lb = 0
18         hb = 10
19         by = bx[0:]
20         tstb()
21
22         lb = 0
23         hb = 10
24         fy = fx[0:]
25         tstf()
26
27         // width 1 (byte)
28         lb = 0
29         hb = 10
30         by = bx[lb:hb]
31         tstb()
32         by = bx[lb:10]
33         tstb()
34         by = bx[lb:]
35         tstb()
36         by = bx[:hb]
37         tstb()
38         by = bx[0:hb]
39         tstb()
40         by = bx[0:10]
41         tstb()
42         by = bx[0:]
43         tstb()
44         by = bx[:10]
45         tstb()
46         by = bx[:]
47         tstb()
48
49         lb = 2
50         hb = 10
51         by = bx[lb:hb]
52         tstb()
53         by = bx[lb:10]
54         tstb()
55         by = bx[lb:]
56         tstb()
57         by = bx[2:hb]
58         tstb()
59         by = bx[2:10]
60         tstb()
61         by = bx[2:]
62         tstb()
63
64         lb = 0
65         hb = 8
66         by = bx[lb:hb]
67         tstb()
68         by = bx[lb:8]
69         tstb()
70         by = bx[0:hb]
71         tstb()
72         by = bx[0:8]
73         tstb()
74         by = bx[:8]
75         tstb()
76         by = bx[:hb]
77         tstb()
78
79         lb = 2
80         hb = 8
81         by = bx[lb:hb]
82         tstb()
83         by = bx[lb:8]
84         tstb()
85         by = bx[2:hb]
86         tstb()
87         by = bx[2:8]
88         tstb()
89
90         // width 4 (float)
91         lb = 0
92         hb = 10
93         fy = fx[lb:hb]
94         tstf()
95         fy = fx[lb:10]
96         tstf()
97         fy = fx[lb:]
98         tstf()
99         fy = fx[:hb]
100         tstf()
101         fy = fx[0:hb]
102         tstf()
103         fy = fx[0:10]
104         tstf()
105         fy = fx[0:]
106         tstf()
107         fy = fx[:10]
108         tstf()
109         fy = fx[:]
110         tstf()
111
112         lb = 2
113         hb = 10
114         fy = fx[lb:hb]
115         tstf()
116         fy = fx[lb:10]
117         tstf()
118         fy = fx[lb:]
119         tstf()
120         fy = fx[2:hb]
121         tstf()
122         fy = fx[2:10]
123         tstf()
124         fy = fx[2:]
125         tstf()
126
127         lb = 0
128         hb = 8
129         fy = fx[lb:hb]
130         tstf()
131         fy = fx[lb:8]
132         tstf()
133         fy = fx[:hb]
134         tstf()
135         fy = fx[0:hb]
136         tstf()
137         fy = fx[0:8]
138         tstf()
139         fy = fx[:8]
140         tstf()
141
142         lb = 2
143         hb = 8
144         fy = fx[lb:hb]
145         tstf()
146         fy = fx[lb:8]
147         tstf()
148         fy = fx[2:hb]
149         tstf()
150         fy = fx[2:8]
151         tstf()
152 }
153
154 func tstb() {
155         t++
156         if len(by) != hb-lb {
157                 println("t=", t, "lb=", lb, "hb=", hb,
158                         "len=", len(by), "hb-lb=", hb-lb)
159                 panic("fail")
160         }
161         if cap(by) != len(bx)-lb {
162                 println("t=", t, "lb=", lb, "hb=", hb,
163                         "cap=", cap(by), "len(bx)-lb=", len(bx)-lb)
164                 panic("fail")
165         }
166         for i := lb; i < hb; i++ {
167                 if bx[i] != by[i-lb] {
168                         println("t=", t, "lb=", lb, "hb=", hb,
169                                 "bx[", i, "]=", bx[i],
170                                 "by[", i-lb, "]=", by[i-lb])
171                         panic("fail")
172                 }
173         }
174         by = nil
175 }
176
177 func tstf() {
178         t++
179         if len(fy) != hb-lb {
180                 println("t=", t, "lb=", lb, "hb=", hb,
181                         "len=", len(fy), "hb-lb=", hb-lb)
182                 panic("fail")
183         }
184         if cap(fy) != len(fx)-lb {
185                 println("t=", t, "lb=", lb, "hb=", hb,
186                         "cap=", cap(fy), "len(fx)-lb=", len(fx)-lb)
187                 panic("fail")
188         }
189         for i := lb; i < hb; i++ {
190                 if fx[i] != fy[i-lb] {
191                         println("t=", t, "lb=", lb, "hb=", hb,
192                                 "fx[", i, "]=", fx[i],
193                                 "fy[", i-lb, "]=", fy[i-lb])
194                         panic("fail")
195                 }
196         }
197         fy = nil
198 }
199
200 func init() {
201         for i := 0; i < len(bx); i++ {
202                 bx[i] = byte(i + 20)
203         }
204         by = nil
205
206         for i := 0; i < len(fx); i++ {
207                 fx[i] = float(i + 20)
208         }
209         fy = nil
210 }