Fix sequence number comparison.
This commit is contained in:
parent
575324ed09
commit
8f16fa5137
@ -46,7 +46,7 @@ func (s sequenceNumber) nextEpoch() sequenceNumber {
|
||||
// == 0 if this is equal to the provided sequenceNumber
|
||||
// > 0 if this is greater than the provided sequenceNumber
|
||||
func (s sequenceNumber) cmp(o sequenceNumber) int {
|
||||
if ecmp := int(s.epoch - o.epoch); ecmp != 0 {
|
||||
if ecmp := int(int32(s.epoch - o.epoch)); ecmp != 0 {
|
||||
return ecmp
|
||||
}
|
||||
return int(s.seq - o.seq)
|
||||
|
||||
49
host/peer/sequence_number_test.go
Normal file
49
host/peer/sequence_number_test.go
Normal file
@ -0,0 +1,49 @@
|
||||
// Copyright 2023 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
package peer
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSequenceNumberCmp(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
a sequenceNumber
|
||||
b sequenceNumber
|
||||
want int
|
||||
}{
|
||||
{
|
||||
a: sequenceNumber{epoch: 1, seq: 1},
|
||||
b: sequenceNumber{epoch: 1, seq: 1},
|
||||
want: 0,
|
||||
},
|
||||
{
|
||||
a: sequenceNumber{epoch: 2, seq: 1},
|
||||
b: sequenceNumber{epoch: 1, seq: 1},
|
||||
want: 1,
|
||||
},
|
||||
{
|
||||
a: sequenceNumber{epoch: 1, seq: 2},
|
||||
b: sequenceNumber{epoch: 1, seq: 1},
|
||||
want: 1,
|
||||
},
|
||||
{
|
||||
a: sequenceNumber{epoch: 20, seq: 1},
|
||||
b: sequenceNumber{epoch: 1, seq: 1},
|
||||
want: 19,
|
||||
},
|
||||
{
|
||||
a: sequenceNumber{epoch: 1, seq: 20},
|
||||
b: sequenceNumber{epoch: 1, seq: 1},
|
||||
want: 19,
|
||||
},
|
||||
} {
|
||||
if got := test.a.cmp(test.b); got != test.want {
|
||||
t.Errorf("%#v cmp> %#v: want %d got %d", test.a, test.b, test.want, got)
|
||||
}
|
||||
if got := test.b.cmp(test.a); got != -test.want {
|
||||
t.Errorf("%#v <cmp %#v: want %d got %d", test.a, test.b, -test.want, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user