github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/logging/ring_buffer_test.go (about) 1 package logging 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestRingBuffer(t *testing.T) { 10 buf := newRingBuffer(10) 11 assert.Equal(t, buf.size, 10) 12 13 contents := buf.Read() 14 assert.Equal(t, "", contents) 15 16 wrote, err := buf.Write([]byte("hello")) 17 assert.NoError(t, err) 18 assert.Equal(t, 5, wrote) 19 assert.False(t, buf.full) 20 contents = buf.Read() 21 assert.NoError(t, err) 22 assert.Equal(t, "hello", contents) 23 24 wrote, err = buf.Write([]byte("world")) 25 assert.NoError(t, err) 26 assert.Equal(t, 5, wrote) 27 assert.True(t, buf.full) 28 contents = buf.Read() 29 assert.NoError(t, err) 30 assert.Equal(t, "helloworld", contents) 31 32 wrote, err = buf.Write([]byte("!")) // will wrap 33 assert.NoError(t, err) 34 assert.Equal(t, 1, wrote) 35 contents = buf.Read() 36 assert.NoError(t, err) 37 assert.Equal(t, "elloworld!", contents) 38 39 msg := "this is longer than buf.size" 40 wrote, err = buf.Write([]byte(msg)) 41 assert.NoError(t, err) 42 assert.Equal(t, len(msg), wrote) 43 contents = buf.Read() 44 assert.NoError(t, err) 45 assert.Equal(t, msg[len(msg)-10:], contents) 46 }