Skip to content

Commit a8b6908

Browse files
madelynnbluejbowens
authored andcommitted
internal/base: set ComparePointSuffixes in EnsureDefaults
Previously this was not set, although its documentation says it is. Add tests for both branches of EnsureDefaults where it is set.
1 parent e9bf6e3 commit a8b6908

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

internal/base/comparer.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ func (c *Comparer) EnsureDefaults() *Comparer {
261261
if c.AbbreviatedKey == nil || c.Separator == nil || c.Successor == nil || c.Name == "" {
262262
panic("invalid Comparer: mandatory field not set")
263263
}
264-
if c.CompareRangeSuffixes != nil && c.Compare != nil && c.Equal != nil && c.Split != nil && c.FormatKey != nil {
264+
if c.CompareRangeSuffixes != nil && c.ComparePointSuffixes != nil && c.Compare != nil && c.Equal != nil && c.Split != nil && c.FormatKey != nil {
265265
return c
266266
}
267267
n := &Comparer{}
@@ -270,14 +270,18 @@ func (c *Comparer) EnsureDefaults() *Comparer {
270270
if n.Split == nil {
271271
n.Split = DefaultSplit
272272
}
273-
if n.CompareRangeSuffixes == nil && n.Compare == nil && n.Equal == nil {
273+
if n.CompareRangeSuffixes == nil && n.ComparePointSuffixes == nil && n.Compare == nil && n.Equal == nil {
274274
n.CompareRangeSuffixes = bytes.Compare
275+
n.ComparePointSuffixes = bytes.Compare
275276
n.Compare = bytes.Compare
276277
n.Equal = bytes.Equal
277278
} else {
278279
if n.CompareRangeSuffixes == nil {
279280
n.CompareRangeSuffixes = bytes.Compare
280281
}
282+
if n.ComparePointSuffixes == nil {
283+
n.ComparePointSuffixes = bytes.Compare
284+
}
281285
if n.Compare == nil {
282286
n.Compare = func(a, b []byte) int {
283287
return defaultCompare(n.Split, n.ComparePointSuffixes, a, b)

internal/base/comparer_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,36 @@ func TestDefaultComparer(t *testing.T) {
7171
}
7272
}
7373

74+
func TestEnsureDefaults(t *testing.T) {
75+
cases := []struct {
76+
comparer *Comparer
77+
}{
78+
{
79+
comparer: &Comparer{
80+
AbbreviatedKey: DefaultComparer.AbbreviatedKey,
81+
Separator: DefaultComparer.Separator,
82+
Successor: DefaultComparer.Successor,
83+
Name: "test",
84+
},
85+
},
86+
{
87+
comparer: &Comparer{
88+
AbbreviatedKey: DefaultComparer.AbbreviatedKey,
89+
Separator: DefaultComparer.Separator,
90+
Successor: DefaultComparer.Successor,
91+
Compare: DefaultComparer.Compare,
92+
Name: "test",
93+
},
94+
},
95+
}
96+
for _, tc := range cases {
97+
comparer := tc.comparer.EnsureDefaults()
98+
if err := CheckComparer(comparer, [][]byte{{}, []byte("abc"), []byte("d"), []byte("ef")}, [][]byte{{}}); err != nil {
99+
t.Error(err)
100+
}
101+
}
102+
}
103+
74104
func TestAbbreviatedKey(t *testing.T) {
75105
rng := rand.New(rand.NewPCG(0, uint64(time.Now().UnixNano())))
76106
randBytes := func(size int) []byte {

0 commit comments

Comments
 (0)