读写测试
This commit is contained in:
parent
d185f78d6c
commit
4596f4541b
63
safety/safemap_test.go
Normal file
63
safety/safemap_test.go
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
package safety
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/fthvgb1/wp-go/helper/number"
|
||||||
|
"github.com/fthvgb1/wp-go/taskPools"
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMap_Load(t *testing.T) {
|
||||||
|
type args[K comparable] struct {
|
||||||
|
key K
|
||||||
|
}
|
||||||
|
m := NewMap[int, int]()
|
||||||
|
m.Store(1, 1)
|
||||||
|
type testCase[K comparable, V any] struct {
|
||||||
|
name string
|
||||||
|
m Map[K, V]
|
||||||
|
args args[K]
|
||||||
|
wantValue V
|
||||||
|
wantOk bool
|
||||||
|
}
|
||||||
|
tests := []testCase[int, int]{
|
||||||
|
{
|
||||||
|
name: "t1",
|
||||||
|
m: m,
|
||||||
|
args: args[int]{1},
|
||||||
|
wantValue: 1,
|
||||||
|
wantOk: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
p := taskPools.NewPools(10)
|
||||||
|
var a0, a1 []int
|
||||||
|
for i := 0; i < 5000; i++ {
|
||||||
|
v := number.Rand(0, 1)
|
||||||
|
if 1 == v {
|
||||||
|
a1 = append(a1, 1)
|
||||||
|
} else {
|
||||||
|
a0 = append(a0, 0)
|
||||||
|
}
|
||||||
|
p.Execute(func() {
|
||||||
|
if 1 == v {
|
||||||
|
m.Load(number.Rand(2, 1000))
|
||||||
|
} else {
|
||||||
|
m.Store(number.Rand(2, 1000), number.Rand(1, 1000))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
fmt.Println(len(a0), len(a1), m.Len())
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
gotValue, gotOk := tt.m.Load(tt.args.key)
|
||||||
|
if !reflect.DeepEqual(gotValue, tt.wantValue) {
|
||||||
|
t.Errorf("Load() gotValue = %v, want %v", gotValue, tt.wantValue)
|
||||||
|
}
|
||||||
|
if gotOk != tt.wantOk {
|
||||||
|
t.Errorf("Load() gotOk = %v, want %v", gotOk, tt.wantOk)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user