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  }