github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/ammswap/keeper/keeper_test.go (about) 1 //go:build ignore 2 3 package keeper 4 5 import ( 6 "testing" 7 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/supply" 10 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 11 "github.com/fibonacci-chain/fbc/x/ammswap/types" 12 "github.com/stretchr/testify/require" 13 ) 14 15 const addrTest = "ex1rf9wr069pt64e58f2w3mjs9w72g8vemzw26658" 16 17 func TestKeeper_GetPoolTokenInfo(t *testing.T) { 18 mapp, _ := GetTestInput(t, 1) 19 keeper := mapp.swapKeeper 20 mapp.BeginBlock(abci.RequestBeginBlock{Header: abci.Header{Height: 2}}) 21 ctx := mapp.BaseApp.NewContext(false, abci.Header{}).WithBlockHeight(10) 22 mapp.supplyKeeper.SetSupply(ctx, supply.NewSupply(mapp.TotalCoinsSupply)) 23 24 // init a pool token 25 symbol := types.GetPoolTokenName(types.TestBasePooledToken, types.TestQuotePooledToken) 26 keeper.NewPoolToken(ctx, symbol) 27 poolToken, err := keeper.GetPoolTokenInfo(ctx, symbol) 28 require.Nil(t, err) 29 require.EqualValues(t, symbol, poolToken.WholeName) 30 31 // pool token is Interest token 32 require.EqualValues(t, types.GenerateTokenType, poolToken.Type) 33 34 // check pool token total supply 35 amount := keeper.GetPoolTokenAmount(ctx, symbol) 36 require.EqualValues(t, sdk.MustNewDecFromStr("0"), amount) 37 38 mintToken := sdk.NewDecCoinFromDec(symbol, sdk.NewDec(1000000)) 39 err = keeper.MintPoolCoinsToUser(ctx, sdk.SysCoins{mintToken}, sdk.AccAddress(addrTest)) 40 require.Nil(t, err) 41 42 balance := mapp.bankKeeper.GetCoins(ctx, sdk.AccAddress(addrTest)) 43 require.NotNil(t, balance) 44 } 45 46 func TestKeeper_GetSwapTokenPairs(t *testing.T) { 47 mapp, _ := GetTestInput(t, 1) 48 keeper := mapp.swapKeeper 49 mapp.BeginBlock(abci.RequestBeginBlock{Header: abci.Header{Height: 2}}) 50 ctx := mapp.BaseApp.NewContext(false, abci.Header{}).WithBlockHeight(10) 51 mapp.supplyKeeper.SetSupply(ctx, supply.NewSupply(mapp.TotalCoinsSupply)) 52 53 swapTokenPair := types.GetTestSwapTokenPair() 54 keeper.SetSwapTokenPair(ctx, types.TestSwapTokenPairName, swapTokenPair) 55 56 expectedSwapTokenPairList := []types.SwapTokenPair{swapTokenPair} 57 swapTokenPairList := keeper.GetSwapTokenPairs(ctx) 58 require.Equal(t, expectedSwapTokenPairList, swapTokenPairList) 59 } 60 61 func TestKeeper_GetRedeemableAssets(t *testing.T) { 62 mapp, _ := GetTestInput(t, 1) 63 keeper := mapp.swapKeeper 64 mapp.BeginBlock(abci.RequestBeginBlock{Header: abci.Header{Height: 2}}) 65 ctx := mapp.BaseApp.NewContext(false, abci.Header{}).WithBlockHeight(10) 66 mapp.supplyKeeper.SetSupply(ctx, supply.NewSupply(mapp.TotalCoinsSupply)) 67 68 swapTokenPair := types.GetTestSwapTokenPair() 69 tokenNumber := sdk.NewDec(100) 70 swapTokenPair.QuotePooledCoin.Amount = tokenNumber 71 swapTokenPair.BasePooledCoin.Amount = tokenNumber 72 keeper.SetSwapTokenPair(ctx, types.TestSwapTokenPairName, swapTokenPair) 73 poolToken := types.InitPoolToken(swapTokenPair.PoolTokenName) 74 initPoolTokenAmount := sdk.NewDecCoinFromDec(swapTokenPair.PoolTokenName, sdk.NewDec(1)) 75 err := keeper.MintPoolCoinsToUser(ctx, sdk.SysCoins{initPoolTokenAmount}, sdk.AccAddress(addrTest)) 76 require.Nil(t, err) 77 mapp.tokenKeeper.NewToken(ctx, poolToken) 78 79 expectedBaseAmount, expectedQuoteAmount := swapTokenPair.BasePooledCoin, swapTokenPair.QuotePooledCoin 80 baseAmount, quoteAmount, err := keeper.GetRedeemableAssets(ctx, swapTokenPair.BasePooledCoin.Denom, swapTokenPair.QuotePooledCoin.Denom, initPoolTokenAmount.Amount) 81 require.Equal(t, expectedBaseAmount, baseAmount) 82 require.Equal(t, expectedQuoteAmount, quoteAmount) 83 } 84 85 func TestGetInputPrice(t *testing.T) { 86 inputAmount := sdk.NewDecWithPrec(1, sdk.Precision) 87 inputReserve := sdk.NewDec(1) 88 outputReserve := sdk.NewDec(1) 89 feeRate := sdk.NewDecWithPrec(3, 3) 90 outputAmount := GetInputPrice(inputAmount, inputReserve, outputReserve, feeRate) 91 expectedAmount := sdk.NewDec(0) 92 require.Equal(t, expectedAmount.String(), outputAmount.String()) 93 }