[#168] refs: Implement binary/JSON encoders/decoders on Checksum

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2020-11-13 16:30:35 +03:00 committed by Alex Vanin
parent 4b55b06780
commit 93df2fd765
6 changed files with 112 additions and 6 deletions

View file

@ -9,6 +9,14 @@ import (
"github.com/stretchr/testify/require"
)
func randSHA256(t *testing.T) [sha256.Size]byte {
cSHA256 := [sha256.Size]byte{}
_, err := rand.Read(cSHA256[:])
require.NoError(t, err)
return cSHA256
}
func TestChecksum(t *testing.T) {
c := NewChecksum()
@ -58,3 +66,28 @@ func TestEqualChecksums(t *testing.T) {
require.False(t, EqualChecksums(cs1, cs2))
}
func TestChecksumEncoding(t *testing.T) {
cs := NewChecksum()
cs.SetSHA256(randSHA256(t))
t.Run("binary", func(t *testing.T) {
data, err := cs.Marshal()
require.NoError(t, err)
c2 := NewChecksum()
require.NoError(t, c2.Unmarshal(data))
require.Equal(t, cs, c2)
})
t.Run("json", func(t *testing.T) {
data, err := cs.MarshalJSON()
require.NoError(t, err)
cs2 := NewChecksum()
require.NoError(t, cs2.UnmarshalJSON(data))
require.Equal(t, cs, cs2)
})
}