github.com/chenjiandongx/go-queue@v0.0.0-20191023082232-e2a36f382f84/deque_test.go (about)

     1  package collections
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestDeque(t *testing.T) {
    10  	q := NewDeque()
    11  
    12  	var item interface{}
    13  	var ok bool
    14  
    15  	for i := 0; i < nums; i++ {
    16  		q.PutLeft(i)
    17  	}
    18  	assert.True(t, q.Qsize() == nums)
    19  
    20  	for i := nums - 1; i >= 0; i-- {
    21  		q.PutRight(i)
    22  	}
    23  	assert.True(t, q.Qsize() == nums*2)
    24  
    25  	for i := 0; i < nums; i++ {
    26  		item, ok = q.GetRight()
    27  		assert.Equal(t, i, item)
    28  		assert.Equal(t, ok, true)
    29  	}
    30  	for i := nums - 1; i >= 0; i-- {
    31  		item, ok = q.GetLeft()
    32  		assert.Equal(t, i, item)
    33  		assert.Equal(t, ok, true)
    34  	}
    35  	assert.True(t, q.Qsize() == 0)
    36  
    37  	item, ok = q.GetLeft()
    38  	assert.Equal(t, nil, item)
    39  	assert.Equal(t, ok, false)
    40  
    41  	item, ok = q.GetRight()
    42  	assert.Equal(t, nil, item)
    43  	assert.Equal(t, ok, false)
    44  }