github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/feesplit/types/params_test.go (about)

     1  package types
     2  
     3  import (
     4  	"testing"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  	"github.com/fibonacci-chain/fbc/x/params"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestParamKeyTable(t *testing.T) {
    12  	require.IsType(t, params.KeyTable{}, ParamKeyTable())
    13  	require.NotEmpty(t, ParamKeyTable())
    14  }
    15  
    16  func TestParamSetPairs(t *testing.T) {
    17  	params := DefaultParams()
    18  	require.NotEmpty(t, params.ParamSetPairs())
    19  }
    20  
    21  func TestParamsValidate(t *testing.T) {
    22  	devShares := sdk.NewDecWithPrec(60, 2)
    23  	derivCostCreate := uint64(50)
    24  
    25  	testCases := []struct {
    26  		name     string
    27  		params   Params
    28  		expError bool
    29  	}{
    30  		{"default", DefaultParams(), false},
    31  		{
    32  			"valid: enabled",
    33  			NewParams(true, devShares, derivCostCreate),
    34  			false,
    35  		},
    36  		{
    37  			"valid: disabled",
    38  			NewParams(false, devShares, derivCostCreate),
    39  			false,
    40  		},
    41  		{
    42  			"valid: 100% devs",
    43  			Params{true, sdk.NewDecFromInt(sdk.NewInt(1)), derivCostCreate},
    44  			false,
    45  		},
    46  		{
    47  			"empty",
    48  			Params{},
    49  			true,
    50  		},
    51  		{
    52  			"invalid: share > 1",
    53  			Params{true, sdk.NewDecFromInt(sdk.NewInt(2)), derivCostCreate},
    54  			true,
    55  		},
    56  		{
    57  			"invalid: share < 0",
    58  			Params{true, sdk.NewDecFromInt(sdk.NewInt(-1)), derivCostCreate},
    59  			true,
    60  		},
    61  		{
    62  			"invalid: wrong address derivation cost",
    63  			NewParams(true, devShares, 50),
    64  			false,
    65  		},
    66  	}
    67  	for _, tc := range testCases {
    68  		err := tc.params.Validate()
    69  
    70  		if tc.expError {
    71  			require.Error(t, err, tc.name)
    72  		} else {
    73  			require.NoError(t, err, tc.name)
    74  		}
    75  	}
    76  }
    77  
    78  func TestParamsValidateShares(t *testing.T) {
    79  	testCases := []struct {
    80  		name     string
    81  		value    interface{}
    82  		expError bool
    83  	}{
    84  		{"default", DefaultDeveloperShares, false},
    85  		{"valid", sdk.NewDecFromInt(sdk.NewInt(1)), false},
    86  		{"invalid - wrong type - bool", false, true},
    87  		{"invalid - wrong type - string", "", true},
    88  		{"invalid - wrong type - int64", int64(123), true},
    89  		{"invalid - wrong type - sdk.Int", sdk.NewInt(1), true},
    90  		{"invalid - is nil", nil, true},
    91  		{"invalid - is negative", sdk.NewDecFromInt(sdk.NewInt(-1)), true},
    92  		{"invalid - is > 1", sdk.NewDecFromInt(sdk.NewInt(2)), true},
    93  	}
    94  	for _, tc := range testCases {
    95  		err := validateShares(tc.value)
    96  
    97  		if tc.expError {
    98  			require.Error(t, err, tc.name)
    99  		} else {
   100  			require.NoError(t, err, tc.name)
   101  		}
   102  	}
   103  }
   104  
   105  func TestParamsValidateBool(t *testing.T) {
   106  	err := validateBool(DefaultEnableFeeSplit)
   107  	require.NoError(t, err)
   108  	err = validateBool(true)
   109  	require.NoError(t, err)
   110  	err = validateBool(false)
   111  	require.NoError(t, err)
   112  	err = validateBool("")
   113  	require.Error(t, err)
   114  	err = validateBool(int64(123))
   115  	require.Error(t, err)
   116  }
   117  
   118  func TestParamsValidateUint64(t *testing.T) {
   119  	err := validateUint64(DefaultAddrDerivationCostCreate)
   120  	require.NoError(t, err)
   121  	err = validateUint64(uint64(0))
   122  	require.NoError(t, err)
   123  	err = validateUint64(uint64(1))
   124  	require.NoError(t, err)
   125  	err = validateUint64("")
   126  	require.Error(t, err)
   127  	err = validateUint64(int64(123))
   128  	require.Error(t, err)
   129  	err = validateUint64(int64(-1))
   130  	require.Error(t, err)
   131  }