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  }