github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/staking/validator_test.go (about) 1 package staking 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/fibonacci-chain/fbc/x/staking/types" 8 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 ) 11 12 func TestValidatorMultiCreates(t *testing.T) { 13 14 _, _, mk := CreateTestInput(t, false, SufficientInitPower) 15 16 params := DefaultParams() 17 params.MaxValidators = 1 18 params.Epoch = 1 19 20 startUpValidator := NewValidator(addrVals[0], PKs[0], Description{}, types.DefaultMinSelfDelegation) 21 startUpStatus := baseValidatorStatus{startUpValidator} 22 23 invalidVal := NewValidator(addrVals[1], PKs[1], Description{}, types.DefaultMinSelfDelegation) 24 invalidVaStatus := baseValidatorStatus{invalidVal} 25 26 bAction := baseAction{mk} 27 inputActions := []IAction{ 28 createValidatorAction{bAction, startUpStatus}, 29 createValidatorAction{bAction, invalidVaStatus}, 30 delegatorsAddSharesAction{bAction, false, true, 0, []sdk.AccAddress{ValidDelegator1}}, 31 endBlockAction{bAction}, 32 } 33 34 actionsAndChecker := []actResChecker{ 35 validatorStatusChecker(sdk.Unbonded.String()), 36 noErrorInHandlerResult(false), 37 validatorDelegatorShareIncreased(true), 38 validatorStatusChecker(sdk.Bonded.String()), 39 } 40 41 smTestCase := newValidatorSMTestCase(mk, params, startUpStatus, inputActions, actionsAndChecker, t) 42 smTestCase.SetupValidatorSetAndDelegatorSet(int(params.MaxValidators)) 43 smTestCase.Run(t) 44 } 45 46 func TestValidatorSM1Create2Destroy3Create(t *testing.T) { 47 48 _, _, mk := CreateTestInput(t, false, SufficientInitPower) 49 50 params := DefaultParams() 51 params.MaxValidators = 1 52 params.Epoch = 1 53 params.UnbondingTime = time.Millisecond * 300 54 55 startUpValidator := NewValidator(addrVals[0], PKs[0], Description{}, types.DefaultMinSelfDelegation) 56 57 startUpStatus := baseValidatorStatus{startUpValidator} 58 recreateValStatus := baseValidatorStatus{startUpValidator} 59 60 bAction := baseAction{mk} 61 inputActions := []IAction{ 62 createValidatorAction{bAction, nil}, 63 endBlockAction{bAction}, 64 destroyValidatorAction{bAction}, 65 endBlockAction{bAction}, 66 waitUntilUnbondingTimeExpired{bAction}, 67 endBlockAction{bAction}, 68 endBlockAction{bAction}, 69 createValidatorAction{bAction, &recreateValStatus}, 70 endBlockAction{bAction}, 71 } 72 73 actionsAndChecker := []actResChecker{ 74 validatorStatusChecker(sdk.Unbonded.String()), 75 queryValidatorCheck(sdk.Bonded, false, &SharesFromDefaultMSD, &DefaultMSD, nil), 76 noErrorInHandlerResult(true), 77 validatorKickedOff(true), 78 nil, 79 nil, 80 nil, 81 queryValidatorCheck(sdk.Unbonded, false, &SharesFromDefaultMSD, &DefaultMSD, nil), 82 queryValidatorCheck(sdk.Bonded, false, &SharesFromDefaultMSD, &DefaultMSD, nil), 83 } 84 85 smTestCase := basicStakingSMTestCase{ 86 mk, 87 params, 88 startUpStatus, 89 inputActions, 90 actionsAndChecker, 91 0, 92 nil, 93 nil, 94 t, 95 } 96 97 smTestCase.Run(t) 98 }