forked from TrueCloudLab/frostfs-node
Evgenii Stratonikov
d641cba2fc
Fix staticcheck warnings after go1.20 update. Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
package meta
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"math"
|
|
mrand "math/rand"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/io"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func Test_getVarUint(t *testing.T) {
|
|
data := make([]byte, 10)
|
|
for _, val := range []uint64{0, 0xfc, 0xfd, 0xfffe, 0xffff, 0xfffffffe, 0xffffffff, math.MaxUint64} {
|
|
expSize := io.PutVarUint(data, val)
|
|
actual, actSize, err := getVarUint(data)
|
|
require.NoError(t, err)
|
|
require.Equal(t, val, actual)
|
|
require.Equal(t, expSize, actSize, "value: %x", val)
|
|
|
|
_, _, err = getVarUint(data[:expSize-1])
|
|
require.Error(t, err)
|
|
}
|
|
}
|
|
|
|
func Test_decodeList(t *testing.T) {
|
|
t.Run("empty", func(t *testing.T) {
|
|
lst, err := decodeList(nil)
|
|
require.NoError(t, err)
|
|
require.True(t, len(lst) == 0)
|
|
})
|
|
t.Run("empty, 0 len", func(t *testing.T) {
|
|
lst, err := decodeList([]byte{0})
|
|
require.NoError(t, err)
|
|
require.True(t, len(lst) == 0)
|
|
})
|
|
t.Run("bad len", func(t *testing.T) {
|
|
_, err := decodeList([]byte{0xfe})
|
|
require.Error(t, err)
|
|
})
|
|
t.Run("random", func(t *testing.T) {
|
|
r := mrand.New(mrand.NewSource(time.Now().Unix()))
|
|
expected := make([][]byte, 20)
|
|
for i := range expected {
|
|
expected[i] = make([]byte, r.Uint32()%10)
|
|
rand.Read(expected[i])
|
|
}
|
|
|
|
data, err := encodeList(expected)
|
|
require.NoError(t, err)
|
|
|
|
actual, err := decodeList(data)
|
|
require.NoError(t, err)
|
|
require.Equal(t, expected, actual)
|
|
|
|
t.Run("unexpected EOF", func(t *testing.T) {
|
|
for i := 1; i < len(data)-1; i++ {
|
|
_, err := decodeList(data[:i])
|
|
require.Error(t, err)
|
|
}
|
|
})
|
|
})
|
|
}
|