github.com/Finschia/finschia-sdk@v0.48.1/x/slashing/simulation/decoder_test.go (about) 1 package simulation_test 2 3 import ( 4 "fmt" 5 "testing" 6 "time" 7 8 gogotypes "github.com/gogo/protobuf/types" 9 "github.com/stretchr/testify/require" 10 11 "github.com/Finschia/finschia-sdk/crypto/keys/ed25519" 12 "github.com/Finschia/finschia-sdk/simapp" 13 sdk "github.com/Finschia/finschia-sdk/types" 14 "github.com/Finschia/finschia-sdk/types/kv" 15 "github.com/Finschia/finschia-sdk/x/slashing/simulation" 16 "github.com/Finschia/finschia-sdk/x/slashing/types" 17 ) 18 19 // nolint:deadcode,unused,varcheck 20 var ( 21 delPk1 = ed25519.GenPrivKey().PubKey() 22 delAddr1 = sdk.AccAddress(delPk1.Address()) 23 valAddr1 = sdk.ValAddress(delPk1.Address()) 24 consAddr1 = sdk.ConsAddress(delPk1.Address().Bytes()) 25 ) 26 27 func TestDecodeStore(t *testing.T) { 28 cdc := simapp.MakeTestEncodingConfig().Marshaler 29 dec := simulation.NewDecodeStore(cdc) 30 31 info := types.NewValidatorSigningInfo(consAddr1, 0, 1, time.Now().UTC(), false, 0) 32 missed := gogotypes.BoolValue{Value: true} 33 bz, err := cdc.MarshalInterface(delPk1) 34 require.NoError(t, err) 35 36 kvPairs := kv.Pairs{ 37 Pairs: []kv.Pair{ 38 {Key: types.ValidatorSigningInfoKey(consAddr1), Value: cdc.MustMarshal(&info)}, 39 {Key: types.ValidatorMissedBlockBitArrayKey(consAddr1, 6), Value: cdc.MustMarshal(&missed)}, 40 {Key: types.AddrPubkeyRelationKey(delAddr1), Value: bz}, 41 {Key: []byte{0x99}, Value: []byte{0x99}}, // This test should panic 42 }, 43 } 44 45 tests := []struct { 46 name string 47 expectedLog string 48 panics bool 49 }{ 50 {"ValidatorSigningInfo", fmt.Sprintf("%v\n%v", info, info), false}, 51 {"ValidatorMissedBlockBitArray", fmt.Sprintf("missedA: %v\nmissedB: %v", missed.Value, missed.Value), false}, 52 {"AddrPubkeyRelation", fmt.Sprintf("PubKeyA: %s\nPubKeyB: %s", delPk1, delPk1), false}, 53 {"other", "", true}, 54 } 55 for i, tt := range tests { 56 i, tt := i, tt 57 t.Run(tt.name, func(t *testing.T) { 58 if tt.panics { 59 require.Panics(t, func() { dec(kvPairs.Pairs[i], kvPairs.Pairs[i]) }, tt.name) 60 } else { 61 require.Equal(t, tt.expectedLog, dec(kvPairs.Pairs[i], kvPairs.Pairs[i]), tt.name) 62 } 63 }) 64 } 65 }