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  }