github.com/lino-network/lino@v0.6.11/test/account/transfer_test.go (about)

     1  package account
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	sdk "github.com/cosmos/cosmos-sdk/types"
     8  	"github.com/tendermint/tendermint/crypto/secp256k1"
     9  
    10  	"github.com/lino-network/lino/test"
    11  	"github.com/lino-network/lino/types"
    12  	acctypes "github.com/lino-network/lino/x/account/types"
    13  )
    14  
    15  // test normal transfer to account name
    16  func TestTransferToAccount(t *testing.T) {
    17  	newAccountName := "newuser"
    18  
    19  	baseT := time.Unix(0, 0)
    20  	baseTime := baseT.Unix()
    21  	lb := test.NewTestLinoBlockchain(t, test.DefaultNumOfVal, baseT)
    22  
    23  	test.CreateAccount(t, newAccountName, lb, 0,
    24  		secp256k1.GenPrivKey(), secp256k1.GenPrivKey(), "100")
    25  
    26  	transferMsg := acctypes.NewTransferMsg(
    27  		test.GenesisUser, newAccountName, types.LNO("200"), "")
    28  
    29  	test.SignCheckDeliver(t, lb, transferMsg, 1, true, test.GenesisTransactionPriv, baseTime)
    30  
    31  	test.CheckBalance(t, test.GenesisUser, lb,
    32  		test.GetGenesisAccountCoin(test.DefaultNumOfVal).Minus(types.NewCoinFromInt64(300*types.Decimals)))
    33  	test.CheckBalance(t, newAccountName, lb, types.NewCoinFromInt64(299*types.Decimals))
    34  }
    35  
    36  // test transfer between addresses.
    37  func TestTransferToAddress(t *testing.T) {
    38  	newAccountName := "newuser"
    39  	newReceiver := "newreceiver"
    40  
    41  	baseT := time.Unix(0, 0)
    42  	baseTime := baseT.Unix()
    43  	lb := test.NewTestLinoBlockchain(t, test.DefaultNumOfVal, baseT)
    44  
    45  	senderPriv := secp256k1.GenPrivKey()
    46  	receiverPriv := secp256k1.GenPrivKey()
    47  
    48  	test.CreateAccount(t, newAccountName, lb, 0,
    49  		senderPriv, secp256k1.GenPrivKey(), "100")
    50  	test.CreateAccount(t, newReceiver, lb, 1,
    51  		receiverPriv, secp256k1.GenPrivKey(), "100")
    52  
    53  	// user -> address
    54  	transferMsg := acctypes.NewTransferV2Msg(
    55  		types.NewAccOrAddrFromAcc(types.AccountKey(test.GenesisUser)),
    56  		types.NewAccOrAddrFromAddr(sdk.AccAddress(senderPriv.PubKey().Address())),
    57  		types.LNO("200"), "")
    58  	test.SignCheckDeliver(t, lb, transferMsg, 2, true, test.GenesisTransactionPriv, baseTime)
    59  
    60  	test.CheckBalance(t, test.GenesisUser, lb,
    61  		test.GetGenesisAccountCoin(test.DefaultNumOfVal).Minus(types.NewCoinFromInt64(400*types.Decimals)))
    62  	test.CheckBalance(t, newAccountName, lb, types.NewCoinFromInt64(299*types.Decimals))
    63  
    64  	// addr -> addr
    65  	transferMsg = acctypes.NewTransferV2Msg(
    66  		types.NewAccOrAddrFromAddr(sdk.AccAddress(senderPriv.PubKey().Address())),
    67  		types.NewAccOrAddrFromAddr(sdk.AccAddress(receiverPriv.PubKey().Address())),
    68  		types.LNO("100"), "")
    69  	test.SignCheckDeliver(t, lb, transferMsg, 1, true, senderPriv, baseTime)
    70  
    71  	test.CheckBalance(t, newAccountName, lb, types.NewCoinFromInt64(199*types.Decimals))
    72  	test.CheckBalance(t, newReceiver, lb, types.NewCoinFromInt64(199*types.Decimals))
    73  
    74  	// addr -> user
    75  	transferMsg = acctypes.NewTransferV2Msg(
    76  		types.NewAccOrAddrFromAddr(sdk.AccAddress(senderPriv.PubKey().Address())),
    77  		types.NewAccOrAddrFromAcc(types.AccountKey(newReceiver)),
    78  		types.LNO("100"), "")
    79  	test.SignCheckDeliver(t, lb, transferMsg, 2, true, senderPriv, baseTime)
    80  
    81  	test.CheckBalance(t, newAccountName, lb, types.NewCoinFromInt64(99*types.Decimals))
    82  	test.CheckBalance(t, newReceiver, lb, types.NewCoinFromInt64(299*types.Decimals))
    83  }