package plist import ( "testing" "github.com/emirpasic/gods/utils" "github.com/Pallinder/go-randomdata" "github.com/emirpasic/gods/trees/binaryheap" ) // func TestGetPriorityQueue(t *testing.T) { // p := NewWithInt() // var l []int // for i := 0; i < 10; i++ { // l = append(l, randomdata.Number(0, 10000)) // } // for _, v := range l { // p.Push(v) // t.Log(p.String()) // } // t.Error(l) // t.Error(p.String()) // for _, i := range []int{-1, 0, p.size / 2, p.size - 1, p.size} { // v, ok := p.Get(i) // t.Error(i, v, ok) // } // } // func TestPustPriorityQueue(t *testing.T) { // p := NewWithInt() // for i := 0; i < 100; i++ { // p.Push(randomdata.Number(0, 10000)) // t.Log(p.String()) // } // t.Error(p.String()) // } // func BenchmarkPriorityQueuePush(b *testing.B) { // p := NewWithInt() // // for i := 0; i < 10000; i++ { // // p.Push(randomdata.Number(0, 100000)) // // // p.Values() // // } // b.N = 10000 // for i := 0; i < b.N; i++ { // p.Push(randomdata.Number(0, 100000)) // } // } // func BenchmarkPriorityQueueGet(b *testing.B) { // p := NewWithInt() // for i := 0; i < 10000; i++ { // p.Push(randomdata.Number(0, 100000)) // // p.Values() // } // b.StartTimer() // b.N = 100000 // for i := 0; i < b.N; i++ { // p.Get(randomdata.Number(0, 10000)) // } // b.StopTimer() // } func TestAVL(t *testing.T) { avl := NewWithIntComparator() for i := 0; i < 100000; i++ { v := randomdata.Number(0, 100) n := avl.Put(v, v) if v != n.Value.(int) { t.Error(v, n) } } t.Error(avl.Values()) f, ok := avl.Ceiling(1000) t.Error(f, ok) if ok { t.Error(f.Next().Value) } f, ok = avl.Floor(-1) t.Error(f, ok) if ok { t.Error(f.Next().Value) } } func BenchmarkAVL(b *testing.B) { avl := NewWithIntComparator() b.N = 1000000 b.StartTimer() for i := 0; i < b.N; i++ { v := randomdata.Number(0, 100000000) avl.Put(v, v) } for i := 0; i < b.N; i++ { avl.Get(i) } b.StopTimer() } func TestHeap(t *testing.T) { heap := binaryheap.NewWithIntComparator() for i := 0; i < 10; i++ { heap.Push(randomdata.Number(0, 1000)) } t.Error(heap.Peek()) t.Error(heap.Values()) utils.Sort(heap.Values(), utils.IntComparator) } func BenchmarkList_InsertValues123(b *testing.B) { a := func(v1, v2 interface{}) int { if v1.(int) > v2.(int) { return -1 } return 1 } h := binaryheap.NewWith(a) TOPK := 50 for i := 0; i < TOPK*1000; i++ { h.Push(i) } b.StartTimer() for i := 0; i < b.N; i++ { h.Push(i) l := []interface{}{} for n := 0; n < TOPK; n++ { v, _ := h.Pop() l = append(l, v) } for _, v := range l { h.Push(v) } } b.StopTimer() }