github.com/Finschia/finschia-sdk@v0.48.1/x/params/types/common_test.go (about) 1 package types_test 2 3 import ( 4 "errors" 5 "fmt" 6 "time" 7 8 sdk "github.com/Finschia/finschia-sdk/types" 9 "github.com/Finschia/finschia-sdk/x/params/types" 10 ) 11 12 var ( 13 keyUnbondingTime = []byte("UnbondingTime") 14 keyMaxValidators = []byte("MaxValidators") 15 keyBondDenom = []byte("BondDenom") 16 keyMaxRedelegationEntries = []byte("MaxRedelegationEntries") 17 18 key = sdk.NewKVStoreKey("storekey") 19 tkey = sdk.NewTransientStoreKey("transientstorekey") 20 ) 21 22 type params struct { 23 UnbondingTime time.Duration `json:"unbonding_time" yaml:"unbonding_time"` 24 MaxValidators uint16 `json:"max_validators" yaml:"max_validators"` 25 BondDenom string `json:"bond_denom" yaml:"bond_denom"` 26 } 27 28 type paramsV2 struct { 29 UnbondingTime time.Duration `json:"unbonding_time" yaml:"unbonding_time"` 30 MaxValidators uint16 `json:"max_validators" yaml:"max_validators"` 31 BondDenom string `json:"bond_denom" yaml:"bond_denom"` 32 MaxRedelegationEntries uint32 `json:"max_redelegation_entries" yaml:"max_redelegation_entries"` 33 } 34 35 func validateUnbondingTime(i interface{}) error { 36 v, ok := i.(time.Duration) 37 if !ok { 38 return fmt.Errorf("invalid parameter type: %T", i) 39 } 40 41 if v < (24 * time.Hour) { 42 return fmt.Errorf("unbonding time must be at least one day") 43 } 44 45 return nil 46 } 47 48 func validateMaxValidators(i interface{}) error { 49 _, ok := i.(uint16) 50 if !ok { 51 return fmt.Errorf("invalid parameter type: %T", i) 52 } 53 54 return nil 55 } 56 57 func validateBondDenom(i interface{}) error { 58 v, ok := i.(string) 59 if !ok { 60 return fmt.Errorf("invalid parameter type: %T", i) 61 } 62 63 if len(v) == 0 { 64 return errors.New("denom cannot be empty") 65 } 66 67 return nil 68 } 69 70 func validateMaxRedelegationEntries(i interface{}) error { 71 _, ok := i.(uint32) 72 if !ok { 73 return fmt.Errorf("invalid parameter type: %T", i) 74 } 75 76 return nil 77 } 78 79 func (p *params) ParamSetPairs() types.ParamSetPairs { 80 return types.ParamSetPairs{ 81 {keyUnbondingTime, &p.UnbondingTime, validateUnbondingTime}, 82 {keyMaxValidators, &p.MaxValidators, validateMaxValidators}, 83 {keyBondDenom, &p.BondDenom, validateBondDenom}, 84 } 85 } 86 87 func (p *paramsV2) ParamSetPairs() types.ParamSetPairs { 88 return types.ParamSetPairs{ 89 {keyUnbondingTime, &p.UnbondingTime, validateUnbondingTime}, 90 {keyMaxValidators, &p.MaxValidators, validateMaxValidators}, 91 {keyBondDenom, &p.BondDenom, validateBondDenom}, 92 {keyMaxRedelegationEntries, &p.MaxRedelegationEntries, validateMaxRedelegationEntries}, 93 } 94 } 95 96 func paramKeyTable() types.KeyTable { 97 return types.NewKeyTable().RegisterParamSet(¶ms{}) 98 }