| // 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 slicing and re-slicing. |
| |
| package main |
| |
| var bx []byte |
| var by []byte |
| var fx []float64 |
| var fy []float64 |
| var lb, hb int |
| var t int |
| |
| func main() { |
| |
| // 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() { |
| bx = make([]byte, 10) |
| for i := 0; i < len(bx); i++ { |
| bx[i] = byte(i + 20) |
| } |
| by = nil |
| |
| fx = make([]float64, 10) |
| for i := 0; i < len(fx); i++ { |
| fx[i] = float64(i + 20) |
| } |
| fy = nil |
| } |