mirror of
https://github.com/fleetdm/fleet
synced 2026-05-19 15:09:20 +00:00
65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
//go:build darwin
|
|
|
|
package santa
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func mk(n int) logEntry {
|
|
return logEntry{Timestamp: string(rune('A' + n))}
|
|
}
|
|
|
|
func tsSlice(entries []logEntry) []string {
|
|
out := make([]string, len(entries))
|
|
for i := range entries {
|
|
out[i] = entries[i].Timestamp
|
|
}
|
|
return out
|
|
}
|
|
|
|
func TestRingBuffer_Len(t *testing.T) {
|
|
rb := newRingBuffer(3)
|
|
require.Equal(t, 0, rb.Len())
|
|
rb.Add(mk(0))
|
|
require.Equal(t, 1, rb.Len())
|
|
rb.Add(mk(1))
|
|
require.Equal(t, 2, rb.Len())
|
|
rb.Add(mk(2))
|
|
require.Equal(t, 3, rb.Len())
|
|
rb.Add(mk(3))
|
|
require.Equal(t, 3, rb.Len())
|
|
rb.Add(mk(4))
|
|
require.Equal(t, 3, rb.Len())
|
|
}
|
|
|
|
func TestRingBuffer_NoWrap(t *testing.T) {
|
|
rb := newRingBuffer(3)
|
|
rb.Add(mk(0)) // A
|
|
rb.Add(mk(1)) // B
|
|
require.Equal(t, []string{"A", "B"}, tsSlice(rb.SliceChrono()))
|
|
}
|
|
|
|
func TestRingBuffer_Wrap(t *testing.T) {
|
|
rb := newRingBuffer(3)
|
|
// Add 6: A B C D E F → keep last 3: D E F
|
|
for i := range 6 {
|
|
rb.Add(mk(i))
|
|
}
|
|
require.Equal(t, []string{"D", "E", "F"}, tsSlice(rb.SliceChrono()))
|
|
}
|
|
|
|
func TestRingBuffer_ExactCapacity(t *testing.T) {
|
|
rb := newRingBuffer(2)
|
|
rb.Add(mk(0)) // A
|
|
rb.Add(mk(1)) // B
|
|
|
|
require.Equal(t, []string{"A", "B"}, tsSlice(rb.SliceChrono()))
|
|
}
|
|
|
|
func TestRingBuffer_Empty(t *testing.T) {
|
|
rb := newRingBuffer(2)
|
|
require.Empty(t, rb.SliceChrono())
|
|
}
|