github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/core/epoch/precompute/new_test.go (about)

     1  package precompute_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute"
     8  	"github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
     9  	pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
    10  	ethpb "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1"
    11  	"github.com/prysmaticlabs/prysm/shared/params"
    12  	"github.com/prysmaticlabs/prysm/shared/testutil/assert"
    13  	"github.com/prysmaticlabs/prysm/shared/testutil/require"
    14  )
    15  
    16  func TestNew(t *testing.T) {
    17  	ffe := params.BeaconConfig().FarFutureEpoch
    18  	s, err := v1.InitializeFromProto(&pb.BeaconState{
    19  		Slot: params.BeaconConfig().SlotsPerEpoch,
    20  		// Validator 0 is slashed
    21  		// Validator 1 is withdrawable
    22  		// Validator 2 is active prev epoch and current epoch
    23  		// Validator 3 is active prev epoch
    24  		Validators: []*ethpb.Validator{
    25  			{Slashed: true, WithdrawableEpoch: ffe, EffectiveBalance: 100},
    26  			{EffectiveBalance: 100},
    27  			{WithdrawableEpoch: ffe, ExitEpoch: ffe, EffectiveBalance: 100},
    28  			{WithdrawableEpoch: ffe, ExitEpoch: 1, EffectiveBalance: 100},
    29  		},
    30  	})
    31  	require.NoError(t, err)
    32  	e := params.BeaconConfig().FarFutureSlot
    33  	v, b, err := precompute.New(context.Background(), s)
    34  	require.NoError(t, err)
    35  	assert.DeepEqual(t, &precompute.Validator{
    36  		IsSlashed:                    true,
    37  		CurrentEpochEffectiveBalance: 100,
    38  		InclusionDistance:            e,
    39  		InclusionSlot:                e,
    40  	}, v[0], "Incorrect validator 0 status")
    41  	assert.DeepEqual(t, &precompute.Validator{
    42  		IsWithdrawableCurrentEpoch:   true,
    43  		CurrentEpochEffectiveBalance: 100,
    44  		InclusionDistance:            e,
    45  		InclusionSlot:                e,
    46  	}, v[1], "Incorrect validator 1 status")
    47  	assert.DeepEqual(t, &precompute.Validator{
    48  		IsActiveCurrentEpoch:         true,
    49  		IsActivePrevEpoch:            true,
    50  		CurrentEpochEffectiveBalance: 100,
    51  		InclusionDistance:            e,
    52  		InclusionSlot:                e,
    53  	}, v[2], "Incorrect validator 2 status")
    54  	assert.DeepEqual(t, &precompute.Validator{
    55  		IsActivePrevEpoch:            true,
    56  		CurrentEpochEffectiveBalance: 100,
    57  		InclusionDistance:            e,
    58  		InclusionSlot:                e,
    59  	}, v[3], "Incorrect validator 3 status")
    60  
    61  	wantedBalances := &precompute.Balance{
    62  		ActiveCurrentEpoch: 100,
    63  		ActivePrevEpoch:    200,
    64  	}
    65  	assert.DeepEqual(t, wantedBalances, b, "Incorrect wanted balance")
    66  }