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 }