1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-18 08:32:40 +08:00
Files
go-mixed/collections/generics/map_test.go
2022-03-28 17:35:58 +08:00

60 lines
1.0 KiB
Go

package generics_test
import (
"testing"
"github.com/charlienet/go-mixed/collections/generics"
"github.com/stretchr/testify/assert"
)
func TestIMap(t *testing.T) {
k := "abc"
v := "bcd"
var m generics.Map[string, string] = generics.NewConcurrnetMap[string, string]()
m.Set(k, v)
_, ok := m.Get(k)
assert.True(t, ok, "不存在")
t.Log(m.Count())
m.Delete(k)
_, ok = m.Get(k)
assert.False(t, ok, "不存在")
t.Log(m.Count())
}
func TestMapCount(t *testing.T) {
mm := make(map[string]string)
mm["a"] = "b"
assert.Equal(t, 1, len(mm))
}
func BenchmarkMap(b *testing.B) {
b.Run("RWLock", func(b *testing.B) {
m := generics.NewRWLockMap[string, string]()
doBenchamark(b, m)
})
b.Run("ConcurrnetMap", func(b *testing.B) {
doBenchamark(b, generics.NewConcurrnetMap[string, string]())
})
}
func doBenchamark(b *testing.B, m generics.Map[string, string]) {
var k = "abc"
var v = "bcd"
b.RunParallel(func(p *testing.PB) {
for p.Next() {
m.Set(k, v)
m.Get(k)
m.Get(k)
m.Get(k)
m.Delete(k)
}
})
}