testdata: move map growth test to map.go

This commit is contained in:
Damian Gryski
2022-04-27 10:31:34 -07:00
committed by Ron Evans
parent b251ce7b33
commit a32cda7a4c
5 changed files with 67 additions and 68 deletions
-1
View File
@@ -57,7 +57,6 @@ func TestBuild(t *testing.T) {
"json.go",
"map.go",
"math.go",
"mapgrowth.go",
"print.go",
"reflect.go",
"slice.go",
+66
View File
@@ -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
View File
@@ -79,3 +79,4 @@ tested growing of a map
2
2
2
done
-66
View File
@@ -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
View File
@@ -1 +0,0 @@
done