Skip to content

Commit 24bb0c1

Browse files
authored
test: add checksum tests for package y (#2246)
**Description** Added `y/checksum_test.go` with unit tests for: CRC32C calculation (including empty input) XXHash64 calculation VerifyChecksum success cases VerifyChecksum mismatch case CalculateChecksum panic on unsupported algorithm
1 parent 9460713 commit 24bb0c1

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

y/checksum_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package y
2+
3+
import (
4+
"hash/crc32"
5+
"testing"
6+
7+
"github.com/cespare/xxhash/v2"
8+
"github.com/dgraph-io/badger/v4/pb"
9+
"github.com/stretchr/testify/require"
10+
)
11+
12+
func TestCalculateChecksum_CRC32C(t *testing.T) {
13+
data := []byte("hello world")
14+
expected := uint64(crc32.Checksum(data, CastagnoliCrcTable))
15+
got := CalculateChecksum(data, pb.Checksum_CRC32C)
16+
require.Equal(t, expected, got)
17+
18+
// empty input
19+
expectedEmpty := uint64(crc32.Checksum([]byte{}, CastagnoliCrcTable))
20+
gotEmpty := CalculateChecksum([]byte{}, pb.Checksum_CRC32C)
21+
require.Equal(t, expectedEmpty, gotEmpty)
22+
}
23+
24+
func TestCalculateChecksum_XXHash64(t *testing.T) {
25+
data := []byte("hello world")
26+
expected := xxhash.Sum64(data)
27+
got := CalculateChecksum(data, pb.Checksum_XXHash64)
28+
require.Equal(t, expected, got)
29+
}
30+
31+
func TestVerifyChecksum_Success(t *testing.T) {
32+
data := []byte("hello world")
33+
c1 := &pb.Checksum{Algo: pb.Checksum_CRC32C, Sum: CalculateChecksum(data, pb.Checksum_CRC32C)}
34+
require.NoError(t, VerifyChecksum(data, c1))
35+
36+
c2 := &pb.Checksum{Algo: pb.Checksum_XXHash64, Sum: CalculateChecksum(data, pb.Checksum_XXHash64)}
37+
require.NoError(t, VerifyChecksum(data, c2))
38+
}
39+
40+
func TestVerifyChecksum_Mismatch(t *testing.T) {
41+
data := []byte("x")
42+
c := &pb.Checksum{Algo: pb.Checksum_CRC32C, Sum: 0}
43+
err := VerifyChecksum(data, c)
44+
require.Error(t, err)
45+
require.Contains(t, err.Error(), "checksum mismatch")
46+
}
47+
48+
func TestCalculateChecksum_UnsupportedAlgoPanics(t *testing.T) {
49+
defer func() {
50+
if r := recover(); r == nil {
51+
t.Fatalf("expected panic for unsupported algorithm")
52+
}
53+
}()
54+
55+
_ = CalculateChecksum([]byte("x"), pb.Checksum_Algorithm(999))
56+
}

0 commit comments

Comments
 (0)