testdata: move map growth test to map.go

Этот коммит содержится в:
Damian Gryski 2022-04-27 10:31:34 -07:00 коммит произвёл Ron Evans
родитель b251ce7b33
коммит a32cda7a4c
5 изменённых файлов: 67 добавлений и 68 удалений

Просмотреть файл

@ -57,7 +57,6 @@ func TestBuild(t *testing.T) {
"json.go",
"map.go",
"math.go",
"mapgrowth.go",
"print.go",
"reflect.go",
"slice.go",

66
testdata/map.go предоставленный
Просмотреть файл

@ -126,6 +126,8 @@ func main() {
println("tested growing of a map")
floatcmplx()
mapgrow()
}
func floatcmplx() {
@ -205,3 +207,67 @@ func testBigMap(squares map[int]int, n int) {
}
}
}
func mapgrow() {
m := make(map[int]int)
const (
Delete = 500
N = Delete * 2
)
for i := 0; i < Delete; i++ {
m[i] = i
}
var deleted bool
for k, v := range m {
if k == 0 {
// grow map
for i := Delete; i < N; i++ {
m[i] = i
}
// delete some elements
for i := 0; i < Delete; i++ {
delete(m, i)
}
deleted = true
continue
}
// make sure we never see a deleted element later in our iteration
if deleted && v < Delete {
println("saw deleted element", v)
}
}
if len(m) != N-Delete {
println("bad length post grow/delete", len(m))
}
seen := make([]bool, 500)
var mcount int
for k, v := range m {
if k != v {
println("element mismatch", k, v)
}
if k < Delete {
println("saw deleted element post-grow", k)
}
seen[v-Delete] = true
mcount++
}
for _, v := range seen {
if !v {
println("missing key", v)
}
}
if mcount != N-Delete {
println("bad number of elements post-grow:", mcount)
}
println("done")
}

1
testdata/map.txt предоставленный
Просмотреть файл

@ -79,3 +79,4 @@ tested growing of a map
2
2
2
done

66
testdata/mapgrowth.go предоставленный
Просмотреть файл

@ -1,66 +0,0 @@
package main
func main() {
m := make(map[int]int)
const (
Delete = 500
N = Delete * 2
)
for i := 0; i < Delete; i++ {
m[i] = i
}
var deleted bool
for k, v := range m {
if k == 0 {
// grow map
for i := Delete; i < N; i++ {
m[i] = i
}
// delete some elements
for i := 0; i < Delete; i++ {
delete(m, i)
}
deleted = true
continue
}
// make sure we never see a deleted element later in our iteration
if deleted && v < Delete {
println("saw deleted element", v)
}
}
if len(m) != N-Delete {
println("bad length post grow/delete", len(m))
}
seen := make([]bool, 500)
var mcount int
for k, v := range m {
if k != v {
println("element mismatch", k, v)
}
if k < Delete {
println("saw deleted element post-grow", k)
}
seen[v-Delete] = true
mcount++
}
for _, v := range seen {
if !v {
println("missing key", v)
}
}
if mcount != N-Delete {
println("bad number of elements post-grow:", mcount)
}
println("done")
}

1
testdata/mapgrowth.txt предоставленный
Просмотреть файл

@ -1 +0,0 @@
done