github.com/onflow/flow-go@v0.33.17/fvm/evm/types/balance_test.go (about)

     1  package types_test
     2  
     3  import (
     4  	"math/big"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/onflow/cadence"
    10  
    11  	"github.com/onflow/flow-go/fvm/evm/types"
    12  )
    13  
    14  func TestBalance(t *testing.T) {
    15  	// test attoflow to flow
    16  
    17  	bal, err := types.NewBalanceFromAttoFlow(types.OneFlowInAttoFlow)
    18  	require.NoError(t, err)
    19  
    20  	conv := bal.ToAttoFlow()
    21  	require.Equal(t, types.OneFlowInAttoFlow, conv)
    22  
    23  	// encoding decoding
    24  	ret, err := types.DecodeBalance(bal.Encode())
    25  	require.NoError(t, err)
    26  	require.Equal(t, bal, ret)
    27  
    28  	// 100.0002 Flow
    29  	u, err := cadence.NewUFix64("100.0002")
    30  	require.NoError(t, err)
    31  	require.Equal(t, "100.00020000", u.String())
    32  
    33  	bb := types.Balance(u).ToAttoFlow()
    34  	require.Equal(t, "100000200000000000000", bb.String())
    35  
    36  	// invalid conversion
    37  	_, err = types.NewBalanceFromAttoFlow(big.NewInt(1))
    38  	require.Error(t, err)
    39  
    40  }