github.com/Finschia/finschia-sdk@v0.48.1/x/distribution/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 "github.com/Finschia/finschia-sdk/codec" 11 codectypes "github.com/Finschia/finschia-sdk/codec/types" 12 sdk "github.com/Finschia/finschia-sdk/types" 13 "github.com/Finschia/finschia-sdk/types/module" 14 simtypes "github.com/Finschia/finschia-sdk/types/simulation" 15 "github.com/Finschia/finschia-sdk/x/distribution/simulation" 16 "github.com/Finschia/finschia-sdk/x/distribution/types" 17 ) 18 19 // TestRandomizedGenState tests the normal scenario of applying RandomizedGenState. 20 // Abonormal 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 distrGenesis types.GenesisState 40 simState.Cdc.MustUnmarshalJSON(simState.GenState[types.ModuleName], &distrGenesis) 41 42 dec1, _ := sdk.NewDecFromStr("0.170000000000000000") 43 dec2, _ := sdk.NewDecFromStr("0.010000000000000000") 44 dec3, _ := sdk.NewDecFromStr("0.210000000000000000") 45 46 require.Equal(t, dec1, distrGenesis.Params.BaseProposerReward) 47 require.Equal(t, dec2, distrGenesis.Params.BonusProposerReward) 48 require.Equal(t, dec3, distrGenesis.Params.CommunityTax) 49 require.Equal(t, true, distrGenesis.Params.WithdrawAddrEnabled) 50 require.Len(t, distrGenesis.DelegatorStartingInfos, 0) 51 require.Len(t, distrGenesis.DelegatorWithdrawInfos, 0) 52 require.Len(t, distrGenesis.ValidatorSlashEvents, 0) 53 } 54 55 // TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState. 56 func TestRandomizedGenState1(t *testing.T) { 57 interfaceRegistry := codectypes.NewInterfaceRegistry() 58 cdc := codec.NewProtoCodec(interfaceRegistry) 59 60 s := rand.NewSource(1) 61 r := rand.New(s) 62 63 // all these tests will panic 64 tests := []struct { 65 simState module.SimulationState 66 panicMsg string 67 }{ 68 { // panic => reason: incomplete initialization of the simState 69 module.SimulationState{}, "invalid memory address or nil pointer dereference"}, 70 { // panic => reason: incomplete initialization of the simState 71 module.SimulationState{ 72 AppParams: make(simtypes.AppParams), 73 Cdc: cdc, 74 Rand: r, 75 }, "assignment to entry in nil map"}, 76 } 77 78 for _, tt := range tests { 79 require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) 80 } 81 }