github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/common/util_test.go (about)

     1  package common
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	apptypes "github.com/fibonacci-chain/fbc/app/types"
     8  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func initConfig() {
    13  	config := sdk.GetConfig()
    14  	apptypes.SetBech32Prefixes(config)
    15  	apptypes.SetBip44CoinType(config)
    16  	config.Seal()
    17  }
    18  
    19  func TestHasSufCoins(t *testing.T) {
    20  	initConfig()
    21  	addr, err := sdk.AccAddressFromBech32("fb1x75n67492zjfvlwnfp080lesh93ysj8xd3y9p2")
    22  	require.Nil(t, err)
    23  
    24  	availDecCoins, err := sdk.ParseDecCoins(fmt.Sprintf("%d%s,%d%s",
    25  		200000, "btc", 100000, NativeToken))
    26  	require.Nil(t, err)
    27  	availCoins := availDecCoins
    28  
    29  	spendDecCoins, err := sdk.ParseDecCoins(fmt.Sprintf("%d%s,%d%s",
    30  		200000, NativeToken, 100000, "btc"))
    31  	require.NoError(t, err)
    32  	spendCoins := spendDecCoins
    33  
    34  	err = HasSufficientCoins(addr, availCoins, spendCoins)
    35  	require.Error(t, err)
    36  	spendDecCoins, err = sdk.ParseDecCoins(fmt.Sprintf("%d%s",
    37  		200000, "xmr"))
    38  	require.Nil(t, err)
    39  	spendCoins = spendDecCoins
    40  
    41  	err = HasSufficientCoins(addr, availCoins, spendCoins)
    42  	require.Error(t, err)
    43  
    44  	spendDecCoins, err = sdk.ParseDecCoins(fmt.Sprintf("%d%s",
    45  		100000, "btc"))
    46  	require.Nil(t, err)
    47  	spendCoins = spendDecCoins
    48  	err = HasSufficientCoins(addr, availCoins, spendCoins)
    49  	require.Nil(t, err)
    50  }
    51  
    52  func TestBlackHoleAddress(t *testing.T) {
    53  	InitConfig()
    54  	addr := BlackHoleAddress()
    55  	a := addr.String()
    56  	fmt.Println(a)
    57  	require.Equal(t, "fb1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpvmzvy", addr.String())
    58  }
    59  
    60  func TestGetFixedLengthRandomString(t *testing.T) {
    61  	require.Equal(t, 100, len(GetFixedLengthRandomString(100)))
    62  }
    63  
    64  func mustAccAddressFromHex(addr string) sdk.AccAddress {
    65  	ret, err := sdk.AccAddressFromHex(addr)
    66  	if err != nil {
    67  		panic(err)
    68  	}
    69  	return ret
    70  }
    71  
    72  func TestCheckSignerAddress(t *testing.T) {
    73  	testcases := []struct {
    74  		signers    []sdk.AccAddress
    75  		delegators []sdk.AccAddress
    76  		result     bool
    77  	}{
    78  		{
    79  			signers: []sdk.AccAddress{
    80  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
    81  			},
    82  			delegators: []sdk.AccAddress{
    83  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
    84  			},
    85  			result: true,
    86  		},
    87  		{
    88  			signers: []sdk.AccAddress{
    89  				mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"),
    90  			},
    91  			delegators: []sdk.AccAddress{
    92  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
    93  			},
    94  			result: false,
    95  		},
    96  		{
    97  			signers:    []sdk.AccAddress{},
    98  			delegators: []sdk.AccAddress{},
    99  			result:     false,
   100  		},
   101  		{
   102  			signers: []sdk.AccAddress{
   103  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
   104  			},
   105  			delegators: []sdk.AccAddress{},
   106  			result:     false,
   107  		},
   108  		{
   109  			signers: []sdk.AccAddress{},
   110  			delegators: []sdk.AccAddress{
   111  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
   112  			},
   113  			result: false,
   114  		},
   115  
   116  		{
   117  			signers: []sdk.AccAddress{
   118  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
   119  				mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"),
   120  			},
   121  			delegators: []sdk.AccAddress{
   122  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
   123  				mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"),
   124  			},
   125  			result: false,
   126  		},
   127  		{
   128  			signers: []sdk.AccAddress{
   129  				mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"),
   130  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
   131  			},
   132  			delegators: []sdk.AccAddress{
   133  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
   134  				mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"),
   135  			},
   136  			result: false,
   137  		},
   138  		{
   139  			signers: []sdk.AccAddress{
   140  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
   141  				mustAccAddressFromHex("bbE4733d85bc2b90682147779DA49caB38C0aA1F"),
   142  			},
   143  			delegators: []sdk.AccAddress{
   144  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
   145  				mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"),
   146  			},
   147  			result: false,
   148  		},
   149  		{
   150  			signers: []sdk.AccAddress{
   151  				mustAccAddressFromHex("c1fB47342851da0F7a6FD13866Ab37a2A125bE36"),
   152  				mustAccAddressFromHex("bbE4733d85bc2b90682147779DA49caB38C0aA1F"),
   153  			},
   154  			delegators: []sdk.AccAddress{
   155  				mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"),
   156  				mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"),
   157  			},
   158  			result: false,
   159  		},
   160  	}
   161  
   162  	for _, ts := range testcases {
   163  		tr := CheckSignerAddress(ts.signers, ts.delegators)
   164  		require.Equal(t, ts.result, tr)
   165  	}
   166  }