mirror of
https://github.com/charlienet/go-mixed.git
synced 2025-07-18 16:42:41 +08:00
60 lines
1.0 KiB
Go
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)
|
|
}
|
|
})
|
|
|
|
}
|