github.com/0chain/gosdk@v1.17.11/core/common/misc_test.go (about)

     1  package common
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  )
     8  
     9  func TestFormat(t *testing.T) {
    10  	token := Balance(129382129321)
    11  	formattedToken, err := token.Format(ZCN)
    12  	require.Equal(t, "12.938 ZCN", formattedToken)
    13  	require.NoError(t, err)
    14  
    15  	formattedToken, err = token.Format(MZCN)
    16  	require.Equal(t, "12938.213 mZCN", formattedToken)
    17  	require.NoError(t, err)
    18  
    19  	formattedToken, err = token.Format(UZCN)
    20  	require.Equal(t, "12938212.932 uZCN", formattedToken)
    21  	require.NoError(t, err)
    22  
    23  	formattedToken, err = token.Format(SAS)
    24  	require.Equal(t, "129382129321 SAS", formattedToken)
    25  	require.NoError(t, err)
    26  
    27  	_, err = token.Format(5)
    28  	require.EqualError(t, err, "undefined balance unit: 5")
    29  }
    30  
    31  func TestFormatStatic(t *testing.T) {
    32  	amount := int64(129382129321)
    33  	zcnAmount, err := FormatStatic(amount, "ZCN")
    34  	require.Equal(t, "12.938 ZCN", zcnAmount)
    35  	require.NoError(t, err)
    36  
    37  	mZCNAmount, err := FormatStatic(amount, "mZCN")
    38  	require.Equal(t, "12938.213 mZCN", mZCNAmount)
    39  	require.NoError(t, err)
    40  
    41  	uZCN, err := FormatStatic(amount, "uZCN")
    42  	require.Equal(t, "12938212.932 uZCN", uZCN)
    43  	require.NoError(t, err)
    44  
    45  	sas, err := FormatStatic(amount, "SAS")
    46  	require.Equal(t, "129382129321 SAS", sas)
    47  	require.NoError(t, err)
    48  }
    49  
    50  func TestAutoFormat(t *testing.T) {
    51  	autoFormatValue, err := AutoFormatStatic(239)
    52  	require.Equal(t, "239 SAS", autoFormatValue)
    53  	require.NoError(t, err)
    54  
    55  	autoFormatValue, err = AutoFormatStatic(27361)
    56  	require.Equal(t, "2.736 uZCN", autoFormatValue)
    57  	require.NoError(t, err)
    58  
    59  	autoFormatValue, err = AutoFormatStatic(23872013)
    60  	require.Equal(t, "2.387 mZCN", autoFormatValue)
    61  	require.NoError(t, err)
    62  
    63  	autoFormatValue, err = AutoFormatStatic(203827162834)
    64  	require.Equal(t, "20.383 ZCN", autoFormatValue)
    65  	require.NoError(t, err)
    66  }
    67  
    68  func TestAutoFormatStatic(t *testing.T) {
    69  	autoFormatValue, err := Balance(239).AutoFormat()
    70  	require.Equal(t, "239 SAS", autoFormatValue)
    71  	require.NoError(t, err)
    72  
    73  	autoFormatValue, err = Balance(27361).AutoFormat()
    74  	require.Equal(t, "2.736 uZCN", autoFormatValue)
    75  	require.NoError(t, err)
    76  
    77  	autoFormatValue, err = Balance(23872013).AutoFormat()
    78  	require.Equal(t, "2.387 mZCN", autoFormatValue)
    79  	require.NoError(t, err)
    80  
    81  	autoFormatValue, err = Balance(203827162834).AutoFormat()
    82  	require.Equal(t, "20.383 ZCN", autoFormatValue)
    83  	require.NoError(t, err)
    84  }
    85  
    86  func TestParseBalance(t *testing.T) {
    87  	b, err := ParseBalance("12.938 ZCN")
    88  	require.NoError(t, err)
    89  	require.Equal(t, Balance(12.938*1e10), b)
    90  
    91  	b, err = ParseBalance("12.938 mzcn")
    92  	require.NoError(t, err)
    93  	require.Equal(t, Balance(12.938*1e7), b)
    94  
    95  	b, err = ParseBalance("12.938 uZCN")
    96  	require.NoError(t, err)
    97  	require.Equal(t, Balance(12.938*1e4), b)
    98  
    99  	b, err = ParseBalance("122389 sas")
   100  	require.NoError(t, err)
   101  	require.Equal(t, Balance(122389*1e0), b)
   102  
   103  	_, err = ParseBalance("10 ")
   104  	require.EqualError(t, err, "invalid input: 10 ")
   105  
   106  	_, err = ParseBalance("10 zwe")
   107  	require.EqualError(t, err, "invalid input: 10 zwe")
   108  
   109  	_, err = ParseBalance(" 10 zcn ")
   110  	require.EqualError(t, err, "invalid input:  10 zcn ")
   111  }
   112  
   113  func TestToBalance(t *testing.T) {
   114  	expectedBalance := Balance(20100000000)
   115  	balance, err := ToBalance(2.01)
   116  	require.Equal(t, expectedBalance, balance)
   117  	require.NoError(t, err)
   118  
   119  	expectedBalance = Balance(30099999999)
   120  	balance, err = ToBalance(3.0099999999)
   121  	require.Equal(t, expectedBalance, balance)
   122  	require.NoError(t, err)
   123  }
   124  
   125  func TestToToken(t *testing.T) {
   126  	b := Balance(12.938 * 1e12)
   127  	token, err := b.ToToken()
   128  	require.Equal(t, 1293.8, token)
   129  	require.NoError(t, err)
   130  
   131  	b = Balance(12.938 * 1e5)
   132  	token, err = b.ToToken()
   133  	require.Equal(t, 0.00012938, token)
   134  	require.NoError(t, err)
   135  }