forked from quic-go/quic-go
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package ringbuffer
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestPushPeekPop(t *testing.T) {
|
|
r := RingBuffer[int]{}
|
|
require.Equal(t, 0, len(r.ring))
|
|
require.Panics(t, func() { r.PopFront() })
|
|
r.PushBack(1)
|
|
r.PushBack(2)
|
|
r.PushBack(3)
|
|
require.Equal(t, 1, r.PeekFront())
|
|
require.Equal(t, 1, r.PeekFront())
|
|
require.Equal(t, 1, r.PopFront())
|
|
require.Equal(t, 2, r.PeekFront())
|
|
require.Equal(t, 2, r.PopFront())
|
|
r.PushBack(4)
|
|
r.PushBack(5)
|
|
require.Equal(t, 3, r.Len())
|
|
r.PushBack(6)
|
|
require.Equal(t, 4, r.Len())
|
|
require.Equal(t, 3, r.PopFront())
|
|
require.Equal(t, 4, r.PopFront())
|
|
require.Equal(t, 5, r.PopFront())
|
|
require.Equal(t, 6, r.PopFront())
|
|
}
|
|
|
|
func TestPanicOnEmptyBuffer(t *testing.T) {
|
|
r := RingBuffer[string]{}
|
|
require.True(t, r.Empty())
|
|
require.Zero(t, r.Len())
|
|
require.Panics(t, func() { r.PeekFront() })
|
|
require.Panics(t, func() { r.PopFront() })
|
|
}
|
|
|
|
func TestClear(t *testing.T) {
|
|
r := RingBuffer[int]{}
|
|
r.Init(2)
|
|
r.PushBack(1)
|
|
r.PushBack(2)
|
|
require.True(t, r.full)
|
|
r.Clear()
|
|
require.False(t, r.full)
|
|
require.Equal(t, 0, r.Len())
|
|
}
|