mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 14:52:17 +00:00
Fix a bug in bit_array's sub function (#2506)
This commit is contained in:
parent
f3d08f969d
commit
c94133ed1b
@ -189,7 +189,7 @@ func (bA *BitArray) Sub(o *BitArray) *BitArray {
|
|||||||
if bA.Bits > o.Bits {
|
if bA.Bits > o.Bits {
|
||||||
c := bA.copy()
|
c := bA.copy()
|
||||||
for i := 0; i < len(o.Elems)-1; i++ {
|
for i := 0; i < len(o.Elems)-1; i++ {
|
||||||
c.Elems[i] &= ^c.Elems[i]
|
c.Elems[i] &= ^o.Elems[i]
|
||||||
}
|
}
|
||||||
i := len(o.Elems) - 1
|
i := len(o.Elems) - 1
|
||||||
if i >= 0 {
|
if i >= 0 {
|
||||||
|
@ -131,6 +131,34 @@ func TestSub2(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSub3(t *testing.T) {
|
||||||
|
|
||||||
|
bA1, _ := randBitArray(231)
|
||||||
|
bA2, _ := randBitArray(81)
|
||||||
|
bA3 := bA1.Sub(bA2)
|
||||||
|
|
||||||
|
bNil := (*BitArray)(nil)
|
||||||
|
require.Equal(t, bNil.Sub(bA1), (*BitArray)(nil))
|
||||||
|
require.Equal(t, bA1.Sub(nil), (*BitArray)(nil))
|
||||||
|
require.Equal(t, bNil.Sub(nil), (*BitArray)(nil))
|
||||||
|
|
||||||
|
if bA3.Bits != bA1.Bits {
|
||||||
|
t.Error("Expected bA1 bits")
|
||||||
|
}
|
||||||
|
if len(bA3.Elems) != len(bA1.Elems) {
|
||||||
|
t.Error("Expected bA1 elems length")
|
||||||
|
}
|
||||||
|
for i := 0; i < bA3.Bits; i++ {
|
||||||
|
expected := bA1.GetIndex(i)
|
||||||
|
if i < bA2.Bits && bA2.GetIndex(i){
|
||||||
|
expected = false
|
||||||
|
}
|
||||||
|
if bA3.GetIndex(i) != expected {
|
||||||
|
t.Error("Wrong bit from bA3")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestPickRandom(t *testing.T) {
|
func TestPickRandom(t *testing.T) {
|
||||||
for idx := 0; idx < 123; idx++ {
|
for idx := 0; idx < 123; idx++ {
|
||||||
bA1 := NewBitArray(123)
|
bA1 := NewBitArray(123)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user