testdata: move map growth test to map.go
Этот коммит содержится в:
родитель
b251ce7b33
коммит
a32cda7a4c
5 изменённых файлов: 67 добавлений и 68 удалений
|
@ -57,7 +57,6 @@ 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/map.go
предоставленный
66
testdata/map.go
предоставленный
|
@ -126,6 +126,8 @@ func main() {
|
||||||
println("tested growing of a map")
|
println("tested growing of a map")
|
||||||
|
|
||||||
floatcmplx()
|
floatcmplx()
|
||||||
|
|
||||||
|
mapgrow()
|
||||||
}
|
}
|
||||||
|
|
||||||
func floatcmplx() {
|
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
предоставленный
1
testdata/map.txt
предоставленный
|
@ -79,3 +79,4 @@ tested growing of a map
|
||||||
2
|
2
|
||||||
2
|
2
|
||||||
2
|
2
|
||||||
|
done
|
||||||
|
|
66
testdata/mapgrowth.go
предоставленный
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
testdata/mapgrowth.txt
предоставленный
|
@ -1 +0,0 @@
|
||||||
done
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче