mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-29 06:37:17 +00:00
3388ab74cf
* Docs * Interface definitions * Fmt and gazelle * Rename interface to interfaces * Define all the type for protoarray * Gaz * Add error types * Add compute delta helper * Compute delta tests * Gaz * Add checking if nodes viable * Test for viable head * Test for non leaf node can lead to viable head * Extra space * Remove fmt print * Update beacon-chain/forkchoice/protoarray/nodes.go Co-Authored-By: Nishant Das <nishdas93@gmail.com> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> Co-authored-by: Nishant Das <nish1993@hotmail.com>
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package protoarray
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
)
|
|
|
|
func TestStore_leadsToViableHead(t *testing.T) {
|
|
tests := []struct {
|
|
n *Node
|
|
justifiedEpoch uint64
|
|
finalizedEpoch uint64
|
|
want bool
|
|
}{
|
|
{&Node{}, 0, 0, true},
|
|
{&Node{}, 1, 0, false},
|
|
{&Node{}, 0, 1, false},
|
|
{&Node{finalizedEpoch: 1, justifiedEpoch: 1}, 1, 1, true},
|
|
{&Node{finalizedEpoch: 1, justifiedEpoch: 1}, 2, 2, false},
|
|
{&Node{finalizedEpoch: 3, justifiedEpoch: 4}, 4, 3, true},
|
|
}
|
|
for _, tc := range tests {
|
|
s := &Store{
|
|
justifiedEpoch: tc.justifiedEpoch,
|
|
finalizedEpoch: tc.finalizedEpoch,
|
|
nodes: []*Node{tc.n},
|
|
}
|
|
got, err := s.leadsToViableHead(context.Background(), tc.n)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got != tc.want {
|
|
t.Errorf("viableForHead() = %v, want %v", got, tc.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestStore_viableForHead(t *testing.T) {
|
|
tests := []struct {
|
|
n *Node
|
|
justifiedEpoch uint64
|
|
finalizedEpoch uint64
|
|
want bool
|
|
}{
|
|
{&Node{}, 0, 0, true},
|
|
{&Node{}, 1, 0, false},
|
|
{&Node{}, 0, 1, false},
|
|
{&Node{finalizedEpoch: 1, justifiedEpoch: 1}, 1, 1, true},
|
|
{&Node{finalizedEpoch: 1, justifiedEpoch: 1}, 2, 2, false},
|
|
{&Node{finalizedEpoch: 3, justifiedEpoch: 4}, 4, 3, true},
|
|
}
|
|
for _, tc := range tests {
|
|
s := &Store{
|
|
justifiedEpoch: tc.justifiedEpoch,
|
|
finalizedEpoch: tc.finalizedEpoch,
|
|
}
|
|
if got := s.viableForHead(context.Background(), tc.n); got != tc.want {
|
|
t.Errorf("viableForHead() = %v, want %v", got, tc.want)
|
|
}
|
|
}
|
|
}
|