github.com/shuguocloud/go-zero@v1.3.0/core/collection/fifo_test.go (about)

     1  package collection
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestFifo(t *testing.T) {
    10  	elements := [][]byte{
    11  		[]byte("hello"),
    12  		[]byte("world"),
    13  		[]byte("again"),
    14  	}
    15  	queue := NewQueue(8)
    16  	for i := range elements {
    17  		queue.Put(elements[i])
    18  	}
    19  
    20  	for _, element := range elements {
    21  		body, ok := queue.Take()
    22  		assert.True(t, ok)
    23  		assert.Equal(t, string(element), string(body.([]byte)))
    24  	}
    25  }
    26  
    27  func TestTakeTooMany(t *testing.T) {
    28  	elements := [][]byte{
    29  		[]byte("hello"),
    30  		[]byte("world"),
    31  		[]byte("again"),
    32  	}
    33  	queue := NewQueue(8)
    34  	for i := range elements {
    35  		queue.Put(elements[i])
    36  	}
    37  
    38  	for range elements {
    39  		queue.Take()
    40  	}
    41  
    42  	assert.True(t, queue.Empty())
    43  	_, ok := queue.Take()
    44  	assert.False(t, ok)
    45  }
    46  
    47  func TestPutMore(t *testing.T) {
    48  	elements := [][]byte{
    49  		[]byte("hello"),
    50  		[]byte("world"),
    51  		[]byte("again"),
    52  	}
    53  	queue := NewQueue(2)
    54  	for i := range elements {
    55  		queue.Put(elements[i])
    56  	}
    57  
    58  	for _, element := range elements {
    59  		body, ok := queue.Take()
    60  		assert.True(t, ok)
    61  		assert.Equal(t, string(element), string(body.([]byte)))
    62  	}
    63  }