| // run | |
| // Copyright 2009 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| // Test basic operations of slices and arrays. | |
| package main | |
| var bx [10]byte | |
| var by []byte | |
| var fx [10]float64 | |
| var fy []float64 | |
| var lb, hb int | |
| var t int | |
| func main() { | |
| lb = 0 | |
| hb = 10 | |
| by = bx[0:] | |
| tstb() | |
| lb = 0 | |
| hb = 10 | |
| fy = fx[0:] | |
| tstf() | |
| // width 1 (byte) | |
| lb = 0 | |
| hb = 10 | |
| by = bx[lb:hb] | |
| tstb() | |
| by = bx[lb:10] | |
| tstb() | |
| by = bx[lb:] | |
| tstb() | |
| by = bx[:hb] | |
| tstb() | |
| by = bx[0:hb] | |
| tstb() | |
| by = bx[0:10] | |
| tstb() | |
| by = bx[0:] | |
| tstb() | |
| by = bx[:10] | |
| tstb() | |
| by = bx[:] | |
| tstb() | |
| lb = 2 | |
| hb = 10 | |
| by = bx[lb:hb] | |
| tstb() | |
| by = bx[lb:10] | |
| tstb() | |
| by = bx[lb:] | |
| tstb() | |
| by = bx[2:hb] | |
| tstb() | |
| by = bx[2:10] | |
| tstb() | |
| by = bx[2:] | |
| tstb() | |
| lb = 0 | |
| hb = 8 | |
| by = bx[lb:hb] | |
| tstb() | |
| by = bx[lb:8] | |
| tstb() | |
| by = bx[0:hb] | |
| tstb() | |
| by = bx[0:8] | |
| tstb() | |
| by = bx[:8] | |
| tstb() | |
| by = bx[:hb] | |
| tstb() | |
| lb = 2 | |
| hb = 8 | |
| by = bx[lb:hb] | |
| tstb() | |
| by = bx[lb:8] | |
| tstb() | |
| by = bx[2:hb] | |
| tstb() | |
| by = bx[2:8] | |
| tstb() | |
| // width 4 (float64) | |
| lb = 0 | |
| hb = 10 | |
| fy = fx[lb:hb] | |
| tstf() | |
| fy = fx[lb:10] | |
| tstf() | |
| fy = fx[lb:] | |
| tstf() | |
| fy = fx[:hb] | |
| tstf() | |
| fy = fx[0:hb] | |
| tstf() | |
| fy = fx[0:10] | |
| tstf() | |
| fy = fx[0:] | |
| tstf() | |
| fy = fx[:10] | |
| tstf() | |
| fy = fx[:] | |
| tstf() | |
| lb = 2 | |
| hb = 10 | |
| fy = fx[lb:hb] | |
| tstf() | |
| fy = fx[lb:10] | |
| tstf() | |
| fy = fx[lb:] | |
| tstf() | |
| fy = fx[2:hb] | |
| tstf() | |
| fy = fx[2:10] | |
| tstf() | |
| fy = fx[2:] | |
| tstf() | |
| lb = 0 | |
| hb = 8 | |
| fy = fx[lb:hb] | |
| tstf() | |
| fy = fx[lb:8] | |
| tstf() | |
| fy = fx[:hb] | |
| tstf() | |
| fy = fx[0:hb] | |
| tstf() | |
| fy = fx[0:8] | |
| tstf() | |
| fy = fx[:8] | |
| tstf() | |
| lb = 2 | |
| hb = 8 | |
| fy = fx[lb:hb] | |
| tstf() | |
| fy = fx[lb:8] | |
| tstf() | |
| fy = fx[2:hb] | |
| tstf() | |
| fy = fx[2:8] | |
| tstf() | |
| } | |
| func tstb() { | |
| t++ | |
| if len(by) != hb-lb { | |
| println("t=", t, "lb=", lb, "hb=", hb, | |
| "len=", len(by), "hb-lb=", hb-lb) | |
| panic("fail") | |
| } | |
| if cap(by) != len(bx)-lb { | |
| println("t=", t, "lb=", lb, "hb=", hb, | |
| "cap=", cap(by), "len(bx)-lb=", len(bx)-lb) | |
| panic("fail") | |
| } | |
| for i := lb; i < hb; i++ { | |
| if bx[i] != by[i-lb] { | |
| println("t=", t, "lb=", lb, "hb=", hb, | |
| "bx[", i, "]=", bx[i], | |
| "by[", i-lb, "]=", by[i-lb]) | |
| panic("fail") | |
| } | |
| } | |
| by = nil | |
| } | |
| func tstf() { | |
| t++ | |
| if len(fy) != hb-lb { | |
| println("t=", t, "lb=", lb, "hb=", hb, | |
| "len=", len(fy), "hb-lb=", hb-lb) | |
| panic("fail") | |
| } | |
| if cap(fy) != len(fx)-lb { | |
| println("t=", t, "lb=", lb, "hb=", hb, | |
| "cap=", cap(fy), "len(fx)-lb=", len(fx)-lb) | |
| panic("fail") | |
| } | |
| for i := lb; i < hb; i++ { | |
| if fx[i] != fy[i-lb] { | |
| println("t=", t, "lb=", lb, "hb=", hb, | |
| "fx[", i, "]=", fx[i], | |
| "fy[", i-lb, "]=", fy[i-lb]) | |
| panic("fail") | |
| } | |
| } | |
| fy = nil | |
| } | |
| func init() { | |
| for i := 0; i < len(bx); i++ { | |
| bx[i] = byte(i + 20) | |
| } | |
| by = nil | |
| for i := 0; i < len(fx); i++ { | |
| fx[i] = float64(i + 20) | |
| } | |
| fy = nil | |
| } |