github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/token/types/util_test.go (about) 1 package types 2 3 import ( 4 "testing" 5 6 "github.com/fibonacci-chain/fbc/x/common" 7 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth" 10 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/secp256k1" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestAmountToCoins(t *testing.T) { 15 coinStr := "2btc,1" + common.NativeToken 16 coins, err := sdk.ParseDecCoins(coinStr) 17 require.Nil(t, err) 18 expectedCoins := sdk.SysCoins{ 19 sdk.NewDecCoinFromDec("btc", sdk.NewDec(2)), 20 sdk.NewDecCoinFromDec(common.NativeToken, sdk.NewDec(1)), 21 } 22 require.EqualValues(t, expectedCoins, coins) 23 } 24 25 func TestStrToTransfers(t *testing.T) { 26 common.InitConfig() 27 //coinStr := `[{"to": "cosmos18ragjd23yv4ctjg3vadh43q5zf8z0hafm4qjrf", "amount": "1BNB,2BTC"}, 28 //{"to": "cosmos18ragjd23yv4ctjg3vadh43q5zf8z0hafm4qjrf", "amount": "1OKB,2BTC"}]` 29 coinStr := `[{"to":"fb18rrc500xu2haw7vyksqlj2lfp9xex2hczv3jkx","amount":"1` + common.NativeToken + `"}]` 30 coinStrError := `[{"to":"fb1swvxs5tl2gnrqglkxg3g235cem746ushsg6zz0","amount":"1` + common.NativeToken + `"}]` 31 addr, err := sdk.AccAddressFromBech32("fb18rrc500xu2haw7vyksqlj2lfp9xex2hczv3jkx") 32 require.Nil(t, err) 33 _, err = StrToTransfers(coinStrError) 34 require.Error(t, err) 35 transfers, err := StrToTransfers(coinStr) 36 require.Nil(t, err) 37 transfer := []TransferUnit{ 38 { 39 To: addr, 40 Coins: []sdk.SysCoin{ 41 sdk.NewDecCoinFromDec(common.NativeToken, sdk.NewDec(1)), 42 }, 43 }, 44 } 45 require.EqualValues(t, transfer, transfers) 46 47 coinStr = `[{"to":"ex1jedas2n0pq2c68pelztgel8ht8pz50rh7s7vfz",amount":"1"}]` 48 _, err = StrToTransfers(coinStr) 49 require.Error(t, err) 50 } 51 52 func TestMergeCoinInfo(t *testing.T) { 53 54 //availableCoins, freezeCoins, lockCoins sdk.SysCoins 55 availableCoins := sdk.SysCoins{ 56 sdk.NewDecCoinFromDec(common.NativeToken, sdk.NewDec(100)), 57 sdk.NewDecCoinFromDec("bnb", sdk.NewDec(100)), 58 sdk.NewDecCoinFromDec("btc", sdk.NewDec(100)), 59 } 60 61 lockedCoins := sdk.SysCoins{ 62 sdk.NewDecCoinFromDec("btc", sdk.NewDec(100)), 63 sdk.NewDecCoinFromDec("abc", sdk.NewDec(100)), 64 } 65 66 coinsInfo := MergeCoinInfo(availableCoins, lockedCoins) 67 expectedCoinsInfo := CoinsInfo{ 68 CoinInfo{"abc", "0", "100.000000000000000000"}, 69 CoinInfo{"bnb", "100.000000000000000000", "0"}, 70 CoinInfo{"btc", "100.000000000000000000", "100.000000000000000000"}, 71 CoinInfo{common.NativeToken, "100.000000000000000000", "0"}, 72 } 73 require.EqualValues(t, expectedCoinsInfo, coinsInfo) 74 } 75 76 func TestDecAccount_String(t *testing.T) { 77 priKey := secp256k1.GenPrivKey() 78 pubKey := priKey.PubKey() 79 addr := sdk.AccAddress(pubKey.Address()) 80 dec := sdk.MustNewDecFromStr("0.2") 81 decCoins := sdk.SysCoins{ 82 sdk.NewDecCoinFromDec(common.NativeToken, dec), 83 } 84 decAccount := DecAccount{ 85 Address: addr, 86 Coins: decCoins, 87 PubKey: pubKey, 88 AccountNumber: 1, 89 Sequence: 1, 90 } 91 92 expectedStr := `Account: 93 Address: ` + addr.String() + ` 94 Pubkey: ` + sdk.MustBech32ifyAccPub(pubKey) + ` 95 Coins: 0.200000000000000000` + common.NativeToken + ` 96 AccountNumber: 1 97 Sequence: 1` 98 99 decStr := decAccount.String() 100 require.EqualValues(t, decStr, expectedStr) 101 } 102 103 func TestBaseAccountToDecAccount(t *testing.T) { 104 priKey := secp256k1.GenPrivKey() 105 pubKey := priKey.PubKey() 106 addr := sdk.AccAddress(pubKey.Address()) 107 108 coins := sdk.SysCoins{ 109 sdk.NewDecCoinFromDec(common.NativeToken, sdk.NewDec(100)), 110 } 111 112 baseAccount := auth.BaseAccount{ 113 Address: addr, 114 Coins: coins, 115 PubKey: pubKey, 116 AccountNumber: 1, 117 Sequence: 1, 118 } 119 120 dec := sdk.MustNewDecFromStr("100.00000000") 121 decCoins := sdk.SysCoins{ 122 sdk.NewDecCoinFromDec(common.NativeToken, dec), 123 } 124 125 expectedDecAccount := DecAccount{ 126 Address: addr, 127 Coins: decCoins, 128 PubKey: pubKey, 129 AccountNumber: 1, 130 Sequence: 1, 131 } 132 133 decAccount := BaseAccountToDecAccount(baseAccount) 134 require.EqualValues(t, decAccount, expectedDecAccount) 135 } 136 137 func TestValidCoinName(t *testing.T) { 138 coinName := "abf.s0fa" 139 valid := sdk.ValidateDenom(coinName) 140 require.Error(t, valid) 141 } 142 143 func TestValidOriginalSymbol(t *testing.T) { 144 name := "abc" 145 require.True(t, ValidOriginalSymbol(name)) 146 name = notAllowedPrefix 147 require.False(t, ValidOriginalSymbol(name)) 148 name = notAllowedPrefix + "abc" 149 require.False(t, ValidOriginalSymbol(name)) 150 name = notAllowedPrefix + "-abc" 151 require.False(t, ValidOriginalSymbol(name)) 152 name = notAllowedPrefix + "-abc-1af" 153 require.False(t, ValidOriginalSymbol(name)) 154 name = notAllowedPrefix + "1" 155 require.False(t, ValidOriginalSymbol(name)) 156 name = "abc-1fa" 157 require.False(t, ValidOriginalSymbol(name)) 158 } 159 160 func TestValidateDenom(t *testing.T) { 161 name := "abc" 162 require.Nil(t, sdk.ValidateDenom(name)) 163 164 name = "abc-123" 165 require.Nil(t, sdk.ValidateDenom(name)) 166 167 name = "abc-ts3" 168 require.NotNil(t, sdk.ValidateDenom(name)) 169 170 name = notAllowedPrefix + "_abc" 171 require.NotNil(t, sdk.ValidateDenom(name)) 172 173 name = notAllowedPrefix + "_abc-1af" 174 require.NotNil(t, sdk.ValidateDenom(name)) 175 176 name = notAllowedPrefix + "_abcde-aaa_abtc-e12" 177 require.Nil(t, sdk.ValidateDenom(name)) 178 179 name = notAllowedPrefix + "_f-abcde-aaa" 180 require.NotNil(t, sdk.ValidateDenom(name)) 181 182 name = "pool-abcde-aaa" 183 require.NotNil(t, sdk.ValidateDenom(name)) 184 185 name = "token-abcde-aaa" 186 require.NotNil(t, sdk.ValidateDenom(name)) 187 188 name = "pool-abc" 189 require.Nil(t, sdk.ValidateDenom(name)) 190 191 name = notAllowedPrefix + "_abc" 192 require.NotNil(t, sdk.ValidateDenom(name)) 193 194 name = notAllowedPrefix + "_abc" + "-bcd" 195 require.NotNil(t, sdk.ValidateDenom(name)) 196 197 name = notAllowedPrefix + "_abc" + "_bcd-1234" 198 require.NotNil(t, sdk.ValidateDenom(name)) 199 200 name = notAllowedPrefix + "_abc-123" + "_bcd" 201 require.Nil(t, sdk.ValidateDenom(name)) 202 }