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 }