generated from xmidt-org/.go-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
algorithm_test.go
103 lines (82 loc) · 2.15 KB
/
algorithm_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// SPDX-FileCopyrightText: 2025 Comcast Cable Communications Management, LLC
// SPDX-License-Identifier: Apache-2.0
package medley
import (
"hash/fnv"
"testing"
"github.com/spaolacci/murmur3"
"github.com/stretchr/testify/suite"
)
type AlgorithmSuite struct {
suite.Suite
hashInput string
expected uint64
}
// sum64 is just a Sum64 function that runs the fnv hash
func (suite *AlgorithmSuite) sum64(v []byte) uint64 {
hash := fnv.New64()
hash.Write(v)
return hash.Sum64()
}
func (suite *AlgorithmSuite) SetupTest() {
suite.hashInput = "test hash value"
suite.expected = suite.sum64([]byte(suite.hashInput))
}
func (suite *AlgorithmSuite) assertExpected(v uint64) {
suite.Equal(suite.expected, v)
}
func (suite *AlgorithmSuite) testSum64BytesUsingSum64() {
alg := Algorithm{
New64: fnv.New64,
Sum64: suite.sum64,
}
suite.assertExpected(
alg.Sum64Bytes([]byte(suite.hashInput)),
)
}
func (suite *AlgorithmSuite) testSum64BytesUsingNew64() {
alg := Algorithm{
New64: fnv.New64,
Sum64: nil,
}
suite.assertExpected(
alg.Sum64Bytes([]byte(suite.hashInput)),
)
}
func (suite *AlgorithmSuite) TestSum64Bytes() {
suite.Run("UsingSum64", suite.testSum64BytesUsingSum64)
suite.Run("UsingNew64", suite.testSum64BytesUsingNew64)
}
func (suite *AlgorithmSuite) testSum64StringUsingSum64() {
alg := Algorithm{
New64: fnv.New64,
Sum64: suite.sum64,
}
suite.assertExpected(
alg.Sum64String(suite.hashInput),
)
}
func (suite *AlgorithmSuite) testSum64StringUsingNew64() {
alg := Algorithm{
New64: fnv.New64,
Sum64: nil,
}
suite.assertExpected(
alg.Sum64String(suite.hashInput),
)
}
func (suite *AlgorithmSuite) TestSum64String() {
suite.Run("UsingSum64", suite.testSum64StringUsingSum64)
suite.Run("UsingNew64", suite.testSum64StringUsingNew64)
}
func (suite *AlgorithmSuite) TestDefaultAlgorithm() {
alg := DefaultAlgorithm()
suite.Require().NotNil(alg.New64)
suite.Require().NotNil(alg.Sum64)
expected := murmur3.Sum64([]byte(suite.hashInput))
suite.Equal(expected, alg.Sum64Bytes([]byte(suite.hashInput)))
suite.Equal(expected, alg.Sum64String(suite.hashInput))
}
func TestAlgorithm(t *testing.T) {
suite.Run(t, new(AlgorithmSuite))
}