Files
quic-go/internal/utils/ringbuffer/ringbuffer_test.go
2024-09-12 00:26:02 -07:00

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())
}