github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/state/v1/setters_attestation_test.go (about) 1 package v1 2 3 import ( 4 "context" 5 "testing" 6 7 types "github.com/prysmaticlabs/eth2-types" 8 pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" 9 eth "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1" 10 "github.com/prysmaticlabs/prysm/shared/params" 11 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 12 "github.com/prysmaticlabs/prysm/shared/testutil/require" 13 ) 14 15 func TestBeaconState_RotateAttestations(t *testing.T) { 16 st, err := InitializeFromProto(&pb.BeaconState{ 17 Slot: 1, 18 CurrentEpochAttestations: []*pb.PendingAttestation{{Data: ð.AttestationData{Slot: 456}}}, 19 PreviousEpochAttestations: []*pb.PendingAttestation{{Data: ð.AttestationData{Slot: 123}}}, 20 }) 21 require.NoError(t, err) 22 23 require.NoError(t, st.RotateAttestations()) 24 require.Equal(t, 0, len(st.currentEpochAttestations())) 25 require.Equal(t, types.Slot(456), st.previousEpochAttestations()[0].Data.Slot) 26 } 27 28 func TestAppendBeyondIndicesLimit(t *testing.T) { 29 zeroHash := params.BeaconConfig().ZeroHash 30 mockblockRoots := make([][]byte, params.BeaconConfig().SlotsPerHistoricalRoot) 31 for i := 0; i < len(mockblockRoots); i++ { 32 mockblockRoots[i] = zeroHash[:] 33 } 34 35 mockstateRoots := make([][]byte, params.BeaconConfig().SlotsPerHistoricalRoot) 36 for i := 0; i < len(mockstateRoots); i++ { 37 mockstateRoots[i] = zeroHash[:] 38 } 39 mockrandaoMixes := make([][]byte, params.BeaconConfig().EpochsPerHistoricalVector) 40 for i := 0; i < len(mockrandaoMixes); i++ { 41 mockrandaoMixes[i] = zeroHash[:] 42 } 43 st, err := InitializeFromProto(&pb.BeaconState{ 44 Slot: 1, 45 CurrentEpochAttestations: []*pb.PendingAttestation{{Data: ð.AttestationData{Slot: 456}}}, 46 PreviousEpochAttestations: []*pb.PendingAttestation{{Data: ð.AttestationData{Slot: 123}}}, 47 Validators: []*eth.Validator{}, 48 Eth1Data: ð.Eth1Data{}, 49 BlockRoots: mockblockRoots, 50 StateRoots: mockstateRoots, 51 RandaoMixes: mockrandaoMixes, 52 }) 53 require.NoError(t, err) 54 _, err = st.HashTreeRoot(context.Background()) 55 require.NoError(t, err) 56 for i := fieldIndex(0); i < fieldIndex(params.BeaconConfig().BeaconStateFieldCount); i++ { 57 st.dirtyFields[i] = true 58 } 59 _, err = st.HashTreeRoot(context.Background()) 60 require.NoError(t, err) 61 for i := 0; i < 10; i++ { 62 assert.NoError(t, st.AppendValidator(ð.Validator{})) 63 } 64 assert.Equal(t, false, st.rebuildTrie[validators]) 65 assert.NotEqual(t, len(st.dirtyIndices[validators]), 0) 66 67 for i := 0; i < indicesLimit; i++ { 68 assert.NoError(t, st.AppendValidator(ð.Validator{})) 69 } 70 assert.Equal(t, true, st.rebuildTrie[validators]) 71 assert.Equal(t, len(st.dirtyIndices[validators]), 0) 72 }