github.com/cosmos/cosmos-sdk@v0.50.10/x/mint/simulation/genesis_test.go (about) 1 package simulation_test 2 3 import ( 4 "encoding/json" 5 "math/rand" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 10 "cosmossdk.io/math" 11 12 sdk "github.com/cosmos/cosmos-sdk/types" 13 "github.com/cosmos/cosmos-sdk/types/module" 14 moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" 15 simtypes "github.com/cosmos/cosmos-sdk/types/simulation" 16 "github.com/cosmos/cosmos-sdk/x/mint" 17 "github.com/cosmos/cosmos-sdk/x/mint/simulation" 18 "github.com/cosmos/cosmos-sdk/x/mint/types" 19 ) 20 21 // TestRandomizedGenState tests the normal scenario of applying RandomizedGenState. 22 // Abonormal scenarios are not tested here. 23 func TestRandomizedGenState(t *testing.T) { 24 encCfg := moduletestutil.MakeTestEncodingConfig(mint.AppModuleBasic{}) 25 26 s := rand.NewSource(1) 27 r := rand.New(s) 28 29 simState := module.SimulationState{ 30 AppParams: make(simtypes.AppParams), 31 Cdc: encCfg.Codec, 32 Rand: r, 33 NumBonded: 3, 34 BondDenom: sdk.DefaultBondDenom, 35 Accounts: simtypes.RandomAccounts(r, 3), 36 InitialStake: math.NewInt(1000), 37 GenState: make(map[string]json.RawMessage), 38 } 39 40 simulation.RandomizedGenState(&simState) 41 42 var mintGenesis types.GenesisState 43 simState.Cdc.MustUnmarshalJSON(simState.GenState[types.ModuleName], &mintGenesis) 44 45 dec1, _ := math.LegacyNewDecFromStr("0.670000000000000000") 46 dec2, _ := math.LegacyNewDecFromStr("0.200000000000000000") 47 dec3, _ := math.LegacyNewDecFromStr("0.070000000000000000") 48 49 require.Equal(t, uint64(6311520), mintGenesis.Params.BlocksPerYear) 50 require.Equal(t, dec1, mintGenesis.Params.GoalBonded) 51 require.Equal(t, dec2, mintGenesis.Params.InflationMax) 52 require.Equal(t, dec3, mintGenesis.Params.InflationMin) 53 require.Equal(t, "stake", mintGenesis.Params.MintDenom) 54 require.Equal(t, "0stake", mintGenesis.Minter.BlockProvision(mintGenesis.Params).String()) 55 require.Equal(t, "0.170000000000000000", mintGenesis.Minter.NextAnnualProvisions(mintGenesis.Params, math.OneInt()).String()) 56 require.Equal(t, "0.169999926644441493", mintGenesis.Minter.NextInflationRate(mintGenesis.Params, math.LegacyOneDec()).String()) 57 require.Equal(t, "0.170000000000000000", mintGenesis.Minter.Inflation.String()) 58 require.Equal(t, "0.000000000000000000", mintGenesis.Minter.AnnualProvisions.String()) 59 } 60 61 // TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState. 62 func TestRandomizedGenState1(t *testing.T) { 63 encCfg := moduletestutil.MakeTestEncodingConfig(mint.AppModuleBasic{}) 64 65 s := rand.NewSource(1) 66 r := rand.New(s) 67 // all these tests will panic 68 tests := []struct { 69 simState module.SimulationState 70 panicMsg string 71 }{ 72 { // panic => reason: incomplete initialization of the simState 73 module.SimulationState{}, "invalid memory address or nil pointer dereference"}, 74 { // panic => reason: incomplete initialization of the simState 75 module.SimulationState{ 76 AppParams: make(simtypes.AppParams), 77 Cdc: encCfg.Codec, 78 Rand: r, 79 }, "assignment to entry in nil map"}, 80 } 81 82 for _, tt := range tests { 83 require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) 84 } 85 }