github.com/Finschia/finschia-sdk@v0.48.1/x/capability/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 "github.com/Finschia/finschia-sdk/types/module" 13 simtypes "github.com/Finschia/finschia-sdk/types/simulation" 14 "github.com/Finschia/finschia-sdk/x/capability/simulation" 15 "github.com/Finschia/finschia-sdk/x/capability/types" 16 ) 17 18 // TestRandomizedGenState tests the normal scenario of applying RandomizedGenState. 19 // Abonormal scenarios are not tested here. 20 func TestRandomizedGenState(t *testing.T) { 21 interfaceRegistry := codectypes.NewInterfaceRegistry() 22 cdc := codec.NewProtoCodec(interfaceRegistry) 23 s := rand.NewSource(1) 24 r := rand.New(s) 25 26 simState := module.SimulationState{ 27 AppParams: make(simtypes.AppParams), 28 Cdc: cdc, 29 Rand: r, 30 NumBonded: 3, 31 Accounts: simtypes.RandomAccounts(r, 3), 32 InitialStake: 1000, 33 GenState: make(map[string]json.RawMessage), 34 } 35 36 simulation.RandomizedGenState(&simState) 37 38 var capGenesis types.GenesisState 39 simState.Cdc.MustUnmarshalJSON(simState.GenState[types.ModuleName], &capGenesis) 40 41 require.Equal(t, uint64(149), capGenesis.Index) 42 require.Len(t, capGenesis.Owners, 0) 43 } 44 45 // TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState. 46 func TestRandomizedGenState1(t *testing.T) { 47 interfaceRegistry := codectypes.NewInterfaceRegistry() 48 cdc := codec.NewProtoCodec(interfaceRegistry) 49 50 s := rand.NewSource(1) 51 r := rand.New(s) 52 53 // all these tests will panic 54 tests := []struct { 55 simState module.SimulationState 56 panicMsg string 57 }{ 58 { // panic => reason: incomplete initialization of the simState 59 module.SimulationState{}, "invalid memory address or nil pointer dereference"}, 60 { // panic => reason: incomplete initialization of the simState 61 module.SimulationState{ 62 AppParams: make(simtypes.AppParams), 63 Cdc: cdc, 64 Rand: r, 65 }, "assignment to entry in nil map"}, 66 } 67 68 for _, tt := range tests { 69 require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) 70 } 71 }