github.com/parquet-go/parquet-go@v0.21.1-0.20240501160520-b3c3a0c3ed6f/bloom/xxhash/xxhash_test.go (about) 1 package xxhash_test 2 3 import ( 4 "testing" 5 6 "github.com/parquet-go/parquet-go/bloom/xxhash" 7 ) 8 9 func TestSum64(t *testing.T) { 10 for _, tt := range []struct { 11 name string 12 input string 13 want uint64 14 }{ 15 {"empty", "", 0xef46db3751d8e999}, 16 {"a", "a", 0xd24ec4f1a98c6e5b}, 17 {"as", "as", 0x1c330fb2d66be179}, 18 {"asd", "asd", 0x631c37ce72a97393}, 19 {"asdf", "asdf", 0x415872f599cea71e}, 20 { 21 "len=63", 22 // Exactly 63 characters, which exercises all code paths. 23 "Call me Ishmael. Some years ago--never mind how long precisely-", 24 0x02a2e85470d6fd96, 25 }, 26 } { 27 t.Run(tt.name, func(t *testing.T) { 28 if got := xxhash.Sum64([]byte(tt.input)); got != tt.want { 29 t.Fatalf("Sum64: got 0x%x; want 0x%x", got, tt.want) 30 } 31 }) 32 } 33 } 34 35 var benchmarks = []struct { 36 name string 37 n int64 38 }{ 39 {"4B", 4}, 40 {"16B", 16}, 41 {"100B", 100}, 42 {"4KB", 4e3}, 43 {"10MB", 10e6}, 44 } 45 46 func BenchmarkSum64(b *testing.B) { 47 for _, bb := range benchmarks { 48 in := make([]byte, bb.n) 49 for i := range in { 50 in[i] = byte(i) 51 } 52 b.Run(bb.name, func(b *testing.B) { 53 b.SetBytes(bb.n) 54 for i := 0; i < b.N; i++ { 55 _ = xxhash.Sum64(in) 56 } 57 }) 58 } 59 }