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(&params{})
    98  }