You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.1 KiB
Go
64 lines
1.1 KiB
Go
4 years ago
|
package collection
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestFifo(t *testing.T) {
|
||
|
elements := [][]byte{
|
||
|
[]byte("hello"),
|
||
|
[]byte("world"),
|
||
|
[]byte("again"),
|
||
|
}
|
||
|
queue := NewQueue(8)
|
||
|
for i := range elements {
|
||
|
queue.Put(elements[i])
|
||
|
}
|
||
|
|
||
|
for _, element := range elements {
|
||
|
body, ok := queue.Take()
|
||
|
assert.True(t, ok)
|
||
|
assert.Equal(t, string(element), string(body.([]byte)))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestTakeTooMany(t *testing.T) {
|
||
|
elements := [][]byte{
|
||
|
[]byte("hello"),
|
||
|
[]byte("world"),
|
||
|
[]byte("again"),
|
||
|
}
|
||
|
queue := NewQueue(8)
|
||
|
for i := range elements {
|
||
|
queue.Put(elements[i])
|
||
|
}
|
||
|
|
||
|
for range elements {
|
||
|
queue.Take()
|
||
|
}
|
||
|
|
||
|
assert.True(t, queue.Empty())
|
||
|
_, ok := queue.Take()
|
||
|
assert.False(t, ok)
|
||
|
}
|
||
|
|
||
|
func TestPutMore(t *testing.T) {
|
||
|
elements := [][]byte{
|
||
|
[]byte("hello"),
|
||
|
[]byte("world"),
|
||
|
[]byte("again"),
|
||
|
}
|
||
|
queue := NewQueue(2)
|
||
|
for i := range elements {
|
||
|
queue.Put(elements[i])
|
||
|
}
|
||
|
|
||
|
for _, element := range elements {
|
||
|
body, ok := queue.Take()
|
||
|
assert.True(t, ok)
|
||
|
assert.Equal(t, string(element), string(body.([]byte)))
|
||
|
}
|
||
|
}
|