github.com/chenjiandongx/go-queue@v0.0.0-20191023082232-e2a36f382f84/priority_queue_test.go (about) 1 package collections 2 3 import ( 4 "math/rand" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestPriorityQueue(t *testing.T) { 11 q := NewPriorityQueue() 12 13 var item1, item2 interface{} 14 var ok bool 15 16 for i := 0; i < nums; i++ { 17 r := rand.Int() 18 q.Put(&PqNode{Value: string(r), Priority: rand.Int()}) 19 } 20 21 for i := 0; i < nums/2; i++ { 22 item1, ok = q.Get() 23 item2, ok = q.Get() 24 assert.True(t, item1.(*PqNode).Priority > item2.(*PqNode).Priority) 25 assert.Equal(t, ok, true) 26 } 27 28 item1, ok = q.Get() 29 assert.Equal(t, nil, item1) 30 assert.Equal(t, ok, false) 31 32 item1, ok = q.Get() 33 assert.Equal(t, nil, item1) 34 assert.Equal(t, ok, false) 35 }