testdata: add test for mapgrowth logic

Этот коммит содержится в:
Damian Gryski 2022-03-14 11:51:44 -07:00 коммит произвёл Ron Evans
родитель 9a8328fcb7
коммит 050d516264
3 изменённых файлов: 68 добавлений и 0 удалений

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

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

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

@ -0,0 +1,66 @@
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 предоставленный Обычный файл
Просмотреть файл

@ -0,0 +1 @@
done