Files
EdgeNode/internal/utils/sets/set_fixed_test.go
2022-04-10 21:21:45 +08:00

63 lines
1.1 KiB
Go

// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package setutils_test
import (
setutils "github.com/TeaOSLab/EdgeNode/internal/utils/sets"
"github.com/iwind/TeaGo/assert"
"github.com/iwind/TeaGo/rands"
"testing"
)
func TestNewFixedSet(t *testing.T) {
var a = assert.NewAssertion(t)
{
var set = setutils.NewFixedSet(0)
set.Push(1)
set.Push(2)
set.Push(2)
a.IsTrue(set.Size() == 2)
a.IsTrue(set.Has(1))
a.IsTrue(set.Has(2))
}
{
var set = setutils.NewFixedSet(1)
set.Push(1)
set.Push(2)
set.Push(3)
a.IsTrue(set.Size() == 1)
a.IsFalse(set.Has(1))
a.IsTrue(set.Has(3))
a.IsFalse(set.Has(4))
}
}
func TestFixedSet_Reset(t *testing.T) {
var a = assert.NewAssertion(t)
var set = setutils.NewFixedSet(3)
set.Push(1)
set.Push(2)
set.Push(3)
set.Reset()
a.IsTrue(set.Size() == 0)
}
func BenchmarkFixedSet_Has(b *testing.B) {
var count = 1_000_000
var set = setutils.NewFixedSet(count)
for i := 0; i < count; i++ {
set.Push(i)
}
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
set.Has(rands.Int(0, 100_000))
}
})
}