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  }