package testutil import ( "encoding/binary" "testing" "github.com/stretchr/testify/require" "golang.org/x/exp/slices" ) func TestOverwriteObjGenerator(t *testing.T) { gen := &OverwriteObjGenerator{ ObjSize: 10, MaxObjects: 4, } for i := 0; i < 40; i++ { obj := gen.Next() id, isSet := obj.ID() i := binary.LittleEndian.Uint64(id[:]) require.True(t, isSet) require.Equal(t, gen.ObjSize, uint64(len(obj.Payload()))) require.True(t, 1 <= i && i <= gen.MaxObjects) } } func TestRandObjGenerator(t *testing.T) { gen := &RandObjGenerator{ObjSize: 10} for i := 0; i < 10; i++ { obj := gen.Next() require.Equal(t, gen.ObjSize, uint64(len(obj.Payload()))) } } func TestSeqObjGenerator(t *testing.T) { gen := &SeqObjGenerator{ObjSize: 10} var addrs []string for i := 1; i <= 10; i++ { obj := gen.Next() id, isSet := obj.ID() addrs = append(addrs, AddressFromObject(t, obj).EncodeToString()) require.True(t, isSet) require.Equal(t, gen.ObjSize, uint64(len(obj.Payload()))) require.Equal(t, uint64(i), binary.LittleEndian.Uint64(id[:])) } require.True(t, slices.IsSorted(addrs)) } func TestRandAddrGenerator(t *testing.T) { gen := RandAddrGenerator(5) for i := 0; i < 50; i++ { addr := gen.Next() id := addr.Object() k := binary.LittleEndian.Uint64(id[:]) require.True(t, 1 <= k && k <= uint64(gen)) } } func TestSeqAddrGenerator(t *testing.T) { gen := &SeqAddrGenerator{MaxID: 10} for i := 1; i <= 20; i++ { addr := gen.Next() id := addr.Object() require.Equal(t, uint64((i-1)%int(gen.MaxID)+1), binary.LittleEndian.Uint64(id[:])) } }