github.com/gravity-devs/liquidity@v1.5.3/x/liquidity/simulation/genesis_test.go (about) 1 package simulation_test 2 3 import ( 4 "encoding/json" 5 "math/rand" 6 "testing" 7 8 "github.com/cosmos/cosmos-sdk/codec" 9 codectypes "github.com/cosmos/cosmos-sdk/codec/types" 10 sdk "github.com/cosmos/cosmos-sdk/types" 11 "github.com/cosmos/cosmos-sdk/types/module" 12 simtypes "github.com/cosmos/cosmos-sdk/types/simulation" 13 "github.com/stretchr/testify/require" 14 15 "github.com/gravity-devs/liquidity/x/liquidity/simulation" 16 "github.com/gravity-devs/liquidity/x/liquidity/types" 17 ) 18 19 // TestRandomizedGenState tests the normal scenario of applying RandomizedGenState. 20 // Abnormal scenarios are not tested here. 21 func TestRandomizedGenState(t *testing.T) { 22 interfaceRegistry := codectypes.NewInterfaceRegistry() 23 cdc := codec.NewProtoCodec(interfaceRegistry) 24 s := rand.NewSource(1) 25 r := rand.New(s) 26 27 simState := module.SimulationState{ 28 AppParams: make(simtypes.AppParams), 29 Cdc: cdc, 30 Rand: r, 31 NumBonded: 3, 32 Accounts: simtypes.RandomAccounts(r, 3), 33 InitialStake: 1000, 34 GenState: make(map[string]json.RawMessage), 35 } 36 37 simulation.RandomizedGenState(&simState) 38 39 var liquidityGenesis types.GenesisState 40 simState.Cdc.MustUnmarshalJSON(simState.GenState[types.ModuleName], &liquidityGenesis) 41 42 dec1, _ := sdk.NewIntFromString("4122540") 43 dec2, _ := sdk.NewIntFromString("11240456") 44 dec3, _ := sdk.NewIntFromString("2040480279449") 45 dec4, _ := sdk.NewDecFromStr("0.448590000000000000") 46 dec5, _ := sdk.NewDecFromStr("0.732160000000000000") 47 dec6, _ := sdk.NewDecFromStr("0.237840000000000000") 48 49 require.Equal(t, dec1, liquidityGenesis.Params.MinInitDepositAmount) 50 require.Equal(t, dec2, liquidityGenesis.Params.InitPoolCoinMintAmount) 51 require.Equal(t, dec3, liquidityGenesis.Params.MaxReserveCoinAmount) 52 require.Equal(t, dec4, liquidityGenesis.Params.SwapFeeRate) 53 require.Equal(t, dec5, liquidityGenesis.Params.WithdrawFeeRate) 54 require.Equal(t, dec6, liquidityGenesis.Params.MaxOrderAmountRatio) 55 require.Equal(t, uint32(6), liquidityGenesis.Params.UnitBatchHeight) 56 } 57 58 // TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState. 59 func TestRandomizedGenState1(t *testing.T) { 60 interfaceRegistry := codectypes.NewInterfaceRegistry() 61 cdc := codec.NewProtoCodec(interfaceRegistry) 62 63 s := rand.NewSource(1) 64 r := rand.New(s) 65 66 // all these tests will panic 67 tests := []struct { 68 simState module.SimulationState 69 panicMsg string 70 }{ 71 { // panic => reason: incomplete initialization of the simState 72 module.SimulationState{}, "invalid memory address or nil pointer dereference"}, 73 { // panic => reason: incomplete initialization of the simState 74 module.SimulationState{ 75 AppParams: make(simtypes.AppParams), 76 Cdc: cdc, 77 Rand: r, 78 }, "assignment to entry in nil map"}, 79 } 80 81 for _, tt := range tests { 82 require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) 83 } 84 }