Initial commit: Go 1.23 release state
This commit is contained in:
138
test/ken/array.go
Normal file
138
test/ken/array.go
Normal file
@@ -0,0 +1,138 @@
|
||||
// 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 arrays and slices.
|
||||
|
||||
package main
|
||||
|
||||
func setpd(a []int) {
|
||||
// print("setpd a=", a, " len=", len(a), " cap=", cap(a), "\n");
|
||||
for i := 0; i < len(a); i++ {
|
||||
a[i] = i
|
||||
}
|
||||
}
|
||||
|
||||
func sumpd(a []int) int {
|
||||
// print("sumpd a=", a, " len=", len(a), " cap=", cap(a), "\n");
|
||||
t := 0
|
||||
for i := 0; i < len(a); i++ {
|
||||
t += a[i]
|
||||
}
|
||||
// print("sumpd t=", t, "\n");
|
||||
return t
|
||||
}
|
||||
|
||||
func setpf(a *[20]int) {
|
||||
// print("setpf a=", a, " len=", len(a), " cap=", cap(a), "\n");
|
||||
for i := 0; i < len(a); i++ {
|
||||
a[i] = i
|
||||
}
|
||||
}
|
||||
|
||||
func sumpf(a *[20]int) int {
|
||||
// print("sumpf a=", a, " len=", len(a), " cap=", cap(a), "\n");
|
||||
t := 0
|
||||
for i := 0; i < len(a); i++ {
|
||||
t += a[i]
|
||||
}
|
||||
// print("sumpf t=", t, "\n");
|
||||
return t
|
||||
}
|
||||
|
||||
func res(t int, lb, hb int) {
|
||||
sb := (hb - lb) * (hb + lb - 1) / 2
|
||||
if t != sb {
|
||||
print("lb=", lb,
|
||||
"; hb=", hb,
|
||||
"; t=", t,
|
||||
"; sb=", sb,
|
||||
"\n")
|
||||
panic("res")
|
||||
}
|
||||
}
|
||||
|
||||
// call ptr dynamic with ptr dynamic
|
||||
func testpdpd() {
|
||||
a := make([]int, 10, 100)
|
||||
if len(a) != 10 && cap(a) != 100 {
|
||||
print("len and cap from new: ", len(a), " ", cap(a), "\n")
|
||||
panic("fail")
|
||||
}
|
||||
|
||||
a = a[0:100]
|
||||
setpd(a)
|
||||
|
||||
a = a[0:10]
|
||||
res(sumpd(a), 0, 10)
|
||||
|
||||
a = a[5:25]
|
||||
res(sumpd(a), 5, 25)
|
||||
|
||||
a = a[30:95]
|
||||
res(sumpd(a), 35, 100)
|
||||
}
|
||||
|
||||
// call ptr fixed with ptr fixed
|
||||
func testpfpf() {
|
||||
var a [20]int
|
||||
|
||||
setpf(&a)
|
||||
res(sumpf(&a), 0, 20)
|
||||
}
|
||||
|
||||
// call ptr dynamic with ptr fixed from new
|
||||
func testpdpf1() {
|
||||
a := new([40]int)
|
||||
setpd(a[0:])
|
||||
res(sumpd(a[0:]), 0, 40)
|
||||
|
||||
b := (*a)[5:30]
|
||||
res(sumpd(b), 5, 30)
|
||||
}
|
||||
|
||||
// call ptr dynamic with ptr fixed from var
|
||||
func testpdpf2() {
|
||||
var a [80]int
|
||||
|
||||
setpd(a[0:])
|
||||
res(sumpd(a[0:]), 0, 80)
|
||||
}
|
||||
|
||||
// generate bounds error with ptr dynamic
|
||||
func testpdfault() {
|
||||
a := make([]int, 100)
|
||||
|
||||
print("good\n")
|
||||
for i := 0; i < 100; i++ {
|
||||
a[i] = 0
|
||||
}
|
||||
print("should fault\n")
|
||||
a[100] = 0
|
||||
print("bad\n")
|
||||
}
|
||||
|
||||
// generate bounds error with ptr fixed
|
||||
func testfdfault() {
|
||||
var a [80]int
|
||||
|
||||
print("good\n")
|
||||
for i := 0; i < 80; i++ {
|
||||
a[i] = 0
|
||||
}
|
||||
print("should fault\n")
|
||||
x := 80
|
||||
a[x] = 0
|
||||
print("bad\n")
|
||||
}
|
||||
|
||||
func main() {
|
||||
testpdpd()
|
||||
testpfpf()
|
||||
testpdpf1()
|
||||
testpdpf2()
|
||||
// print("testpdfault\n"); testpdfault();
|
||||
// print("testfdfault\n"); testfdfault();
|
||||
}
|
||||
Reference in New Issue
Block a user