blob: 8ca2e5a1b1ee650576c390ee716b3eafc79d2d31 [file] [log] [blame]
package ring
import (
"testing"
"github.com/stretchr/testify/require"
"go.skia.org/infra/go/deepequal/assertdeep"
"go.skia.org/infra/go/testutils/unittest"
)
func TestStringRing(t *testing.T) {
unittest.SmallTest(t)
// No capacity.
r, err := NewStringRing(0)
require.Nil(t, r)
require.NotNil(t, err)
r, err = NewStringRing(-1)
require.Nil(t, r)
require.NotNil(t, err)
// Cap of 1.
r, err = NewStringRing(1)
require.Nil(t, err)
assertdeep.Equal(t, []string{}, r.GetAll())
r.Put("a")
assertdeep.Equal(t, []string{"a"}, r.GetAll())
r.Put("b")
assertdeep.Equal(t, []string{"b"}, r.GetAll())
r.Put("c")
assertdeep.Equal(t, []string{"c"}, r.GetAll())
// Cap of 2.
r, err = NewStringRing(2)
require.Nil(t, err)
assertdeep.Equal(t, []string{}, r.GetAll())
r.Put("a")
assertdeep.Equal(t, []string{"a"}, r.GetAll())
r.Put("b")
assertdeep.Equal(t, []string{"a", "b"}, r.GetAll())
r.Put("c")
assertdeep.Equal(t, []string{"b", "c"}, r.GetAll())
r.Put("d")
assertdeep.Equal(t, []string{"c", "d"}, r.GetAll())
// Cap of 3.
r, err = NewStringRing(3)
require.Nil(t, err)
assertdeep.Equal(t, []string{}, r.GetAll())
r.Put("a")
assertdeep.Equal(t, []string{"a"}, r.GetAll())
r.Put("b")
assertdeep.Equal(t, []string{"a", "b"}, r.GetAll())
r.Put("c")
assertdeep.Equal(t, []string{"a", "b", "c"}, r.GetAll())
r.Put("d")
assertdeep.Equal(t, []string{"b", "c", "d"}, r.GetAll())
}