From b61794d74be2d48f41193feef07f32e4d1af405e Mon Sep 17 00:00:00 2001 From: bandl <1658002533@qq.com> Date: Tue, 12 Oct 2021 15:10:10 +0800 Subject: [PATCH] test(util): test skiplist --- pkg/util/skiplist/skiplist_test.go | 68 ++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 pkg/util/skiplist/skiplist_test.go diff --git a/pkg/util/skiplist/skiplist_test.go b/pkg/util/skiplist/skiplist_test.go new file mode 100644 index 0000000..7e28e7b --- /dev/null +++ b/pkg/util/skiplist/skiplist_test.go @@ -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) + +}