2020-08-21 23:27:51 +00:00
|
|
|
package kv
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
|
|
|
|
"github.com/prysmaticlabs/go-bitfield"
|
|
|
|
"github.com/prysmaticlabs/prysm/shared/testutil/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestAttCaches_hasSeenBit(t *testing.T) {
|
|
|
|
c := NewAttCaches()
|
2020-08-24 20:06:28 +00:00
|
|
|
d := ðpb.AttestationData{}
|
|
|
|
seenA1 := ðpb.Attestation{Data: d, AggregationBits: bitfield.Bitlist{0b10000011}}
|
|
|
|
seenA2 := ðpb.Attestation{Data: d, AggregationBits: bitfield.Bitlist{0b11100000}}
|
2020-08-21 23:27:51 +00:00
|
|
|
require.NoError(t, c.insertSeenBit(seenA1))
|
|
|
|
require.NoError(t, c.insertSeenBit(seenA2))
|
|
|
|
tests := []struct {
|
|
|
|
att *ethpb.Attestation
|
|
|
|
want bool
|
|
|
|
}{
|
2020-08-24 20:06:28 +00:00
|
|
|
{att: ðpb.Attestation{Data: d, AggregationBits: bitfield.Bitlist{0b10000000}}, want: true},
|
|
|
|
{att: ðpb.Attestation{Data: d, AggregationBits: bitfield.Bitlist{0b10000001}}, want: true},
|
|
|
|
{att: ðpb.Attestation{Data: d, AggregationBits: bitfield.Bitlist{0b11100000}}, want: true},
|
|
|
|
{att: ðpb.Attestation{Data: d, AggregationBits: bitfield.Bitlist{0b10000011}}, want: true},
|
|
|
|
{att: ðpb.Attestation{Data: d, AggregationBits: bitfield.Bitlist{0b00001000}}, want: false},
|
|
|
|
{att: ðpb.Attestation{Data: d, AggregationBits: bitfield.Bitlist{0b11110111}}, want: false},
|
2020-08-21 23:27:51 +00:00
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
got, err := c.hasSeenBit(tt.att)
|
|
|
|
require.NoError(t, err)
|
|
|
|
if got != tt.want {
|
|
|
|
t.Errorf("hasSeenBit() got = %v, want %v", got, tt.want)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|