test(util): test skiplist

This commit is contained in:
bandl 2021-10-12 15:10:10 +08:00
parent 5776e0ba6e
commit b61794d74b
1 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,68 @@
package skiplist
import (
"fmt"
"gitee.com/timedb/wheatCache/pkg/logx"
"github.com/stretchr/testify/require"
"math/rand"
"testing"
"time"
)
// 时间测试
func TestSkiplist_InsertTimeB(t *testing.T) {
// 测试 达到 maxLevel = 18 时性能 OK
list := NewSkipList(18)
for i := 0; i < 100; i++ {
list.Insert(float64(i), i)
}
list.debugPrint()
}
func TestSkiplist_InsertTimeA(t *testing.T) {
// 测试 达到 maxLevel = 18 时性能 OK
list := NewSkipList(20)
for i := 0; i < 200; i++ {
list.Insert(float64(rand.Intn(100)), i)
}
list.debugPrint()
start := time.Now()
list.Insert(7890, 1)
end := time.Now()
fmt.Println(end.UnixNano() - start.UnixNano())
}
func TestSkipList_Insert(t *testing.T) {
s := NewSkipList(18)
s.Insert(20, 1)
s.Insert(30, 2)
s.Insert(11, 3)
s.Insert(20, 11)
val := s.Get(30)
require.Equal(t, 2, val)
val = s.Get(11)
require.Equal(t, 3, val)
require.Equal(t, s.GetAll(20), []interface{}{1, 11})
s.RemoveAll(20)
require.Equal(t, s.GetAll(20), []interface{}{})
}
func Test_skipList_ClearLeft(t *testing.T) {
s := NewSkipList(18)
for i := 0; i < 100; i++ {
s.Insert(float64(rand.Intn(100)), i)
}
val := s.PopLeft(50)
logx.Debug("val:%v", val)
s.debugPrint()
require.Equal(t, s.Get(20), nil)
}