modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/ken/slicearray.go (about) 1 // run 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 // Test basic operations of slices and arrays. 8 9 package main 10 11 var bx [10]byte 12 var by []byte 13 var fx [10]float64 14 var fy []float64 15 var lb, hb int 16 var t int 17 18 func main() { 19 lb = 0 20 hb = 10 21 by = bx[0:] 22 tstb() 23 24 lb = 0 25 hb = 10 26 fy = fx[0:] 27 tstf() 28 29 // width 1 (byte) 30 lb = 0 31 hb = 10 32 by = bx[lb:hb] 33 tstb() 34 by = bx[lb:10] 35 tstb() 36 by = bx[lb:] 37 tstb() 38 by = bx[:hb] 39 tstb() 40 by = bx[0:hb] 41 tstb() 42 by = bx[0:10] 43 tstb() 44 by = bx[0:] 45 tstb() 46 by = bx[:10] 47 tstb() 48 by = bx[:] 49 tstb() 50 51 lb = 2 52 hb = 10 53 by = bx[lb:hb] 54 tstb() 55 by = bx[lb:10] 56 tstb() 57 by = bx[lb:] 58 tstb() 59 by = bx[2:hb] 60 tstb() 61 by = bx[2:10] 62 tstb() 63 by = bx[2:] 64 tstb() 65 66 lb = 0 67 hb = 8 68 by = bx[lb:hb] 69 tstb() 70 by = bx[lb:8] 71 tstb() 72 by = bx[0:hb] 73 tstb() 74 by = bx[0:8] 75 tstb() 76 by = bx[:8] 77 tstb() 78 by = bx[:hb] 79 tstb() 80 81 lb = 2 82 hb = 8 83 by = bx[lb:hb] 84 tstb() 85 by = bx[lb:8] 86 tstb() 87 by = bx[2:hb] 88 tstb() 89 by = bx[2:8] 90 tstb() 91 92 // width 4 (float64) 93 lb = 0 94 hb = 10 95 fy = fx[lb:hb] 96 tstf() 97 fy = fx[lb:10] 98 tstf() 99 fy = fx[lb:] 100 tstf() 101 fy = fx[:hb] 102 tstf() 103 fy = fx[0:hb] 104 tstf() 105 fy = fx[0:10] 106 tstf() 107 fy = fx[0:] 108 tstf() 109 fy = fx[:10] 110 tstf() 111 fy = fx[:] 112 tstf() 113 114 lb = 2 115 hb = 10 116 fy = fx[lb:hb] 117 tstf() 118 fy = fx[lb:10] 119 tstf() 120 fy = fx[lb:] 121 tstf() 122 fy = fx[2:hb] 123 tstf() 124 fy = fx[2:10] 125 tstf() 126 fy = fx[2:] 127 tstf() 128 129 lb = 0 130 hb = 8 131 fy = fx[lb:hb] 132 tstf() 133 fy = fx[lb:8] 134 tstf() 135 fy = fx[:hb] 136 tstf() 137 fy = fx[0:hb] 138 tstf() 139 fy = fx[0:8] 140 tstf() 141 fy = fx[:8] 142 tstf() 143 144 lb = 2 145 hb = 8 146 fy = fx[lb:hb] 147 tstf() 148 fy = fx[lb:8] 149 tstf() 150 fy = fx[2:hb] 151 tstf() 152 fy = fx[2:8] 153 tstf() 154 } 155 156 func tstb() { 157 t++ 158 if len(by) != hb-lb { 159 println("t=", t, "lb=", lb, "hb=", hb, 160 "len=", len(by), "hb-lb=", hb-lb) 161 panic("fail") 162 } 163 if cap(by) != len(bx)-lb { 164 println("t=", t, "lb=", lb, "hb=", hb, 165 "cap=", cap(by), "len(bx)-lb=", len(bx)-lb) 166 panic("fail") 167 } 168 for i := lb; i < hb; i++ { 169 if bx[i] != by[i-lb] { 170 println("t=", t, "lb=", lb, "hb=", hb, 171 "bx[", i, "]=", bx[i], 172 "by[", i-lb, "]=", by[i-lb]) 173 panic("fail") 174 } 175 } 176 by = nil 177 } 178 179 func tstf() { 180 t++ 181 if len(fy) != hb-lb { 182 println("t=", t, "lb=", lb, "hb=", hb, 183 "len=", len(fy), "hb-lb=", hb-lb) 184 panic("fail") 185 } 186 if cap(fy) != len(fx)-lb { 187 println("t=", t, "lb=", lb, "hb=", hb, 188 "cap=", cap(fy), "len(fx)-lb=", len(fx)-lb) 189 panic("fail") 190 } 191 for i := lb; i < hb; i++ { 192 if fx[i] != fy[i-lb] { 193 println("t=", t, "lb=", lb, "hb=", hb, 194 "fx[", i, "]=", fx[i], 195 "fy[", i-lb, "]=", fy[i-lb]) 196 panic("fail") 197 } 198 } 199 fy = nil 200 } 201 202 func init() { 203 for i := 0; i < len(bx); i++ { 204 bx[i] = byte(i + 20) 205 } 206 by = nil 207 208 for i := 0; i < len(fx); i++ { 209 fx[i] = float64(i + 20) 210 } 211 fy = nil 212 }