github.com/Finschia/finschia-sdk@v0.49.1/x/fswap/keeper/calc_test.go (about) 1 package keeper 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 sdk "github.com/Finschia/finschia-sdk/types" 10 ) 11 12 func TestCalcSwap(t *testing.T) { 13 rateDot5, err := sdk.NewDecFromStr("0.5") 14 require.NoError(t, err) 15 rateDot3maxPrecision, err := sdk.NewDecFromStr("0.333333333333333333") 16 require.NoError(t, err) 17 18 finschiaSwapRate, err := sdk.NewDecFromStr("148.079656") 19 require.NoError(t, err) 20 conySwapRate := finschiaSwapRate.Mul(sdk.NewDec(1000000)) 21 pebSwapRateForCony, err := sdk.NewDecFromStr("148079656000000") 22 require.NoError(t, err) 23 testCases := map[string]struct { 24 fromAmount sdk.Int 25 expectedAmount sdk.Int 26 swapRate sdk.Dec 27 }{ 28 "swapRate 0.5": { 29 fromAmount: sdk.ZeroInt(), 30 swapRate: rateDot5, 31 expectedAmount: sdk.ZeroInt(), 32 }, 33 "swapRate 0.333333333333333333": { 34 fromAmount: sdk.NewInt(3), 35 swapRate: rateDot3maxPrecision, 36 expectedAmount: sdk.ZeroInt(), 37 }, 38 "swapRate conySwapRate(148.079656 * 10^6) fromAmount(1)": { 39 fromAmount: sdk.NewInt(1), 40 swapRate: conySwapRate, 41 expectedAmount: sdk.NewInt(148079656), 42 }, 43 "swapRate conySwapRate(148.079656 * 10^6) fromAmount(3)": { 44 fromAmount: sdk.NewInt(3), 45 swapRate: conySwapRate, 46 expectedAmount: sdk.NewInt(444238968), 47 }, 48 "pebSwapRateForCony pebSwapRateForCony(148.079656 * 10^12) fromAmount(1)": { 49 fromAmount: sdk.NewInt(1), 50 swapRate: pebSwapRateForCony, 51 expectedAmount: sdk.NewInt(148079656000000), 52 }, 53 "pebSwapRateForCony pebSwapRateForCony(148.079656 * 10^12) fromAmount(3)": { 54 fromAmount: sdk.NewInt(3), 55 swapRate: pebSwapRateForCony, 56 expectedAmount: sdk.NewInt(444238968000000), 57 }, 58 } 59 for name, tc := range testCases { 60 t.Run(name, func(t *testing.T) { 61 actualAmount := CalcSwap(tc.swapRate, tc.fromAmount) 62 require.Equal(t, tc.expectedAmount, actualAmount, fmt.Sprintf("tc.expectedAmount = %v, actualAmount = %v", tc.expectedAmount, actualAmount)) 63 }) 64 } 65 }