github.com/Finschia/finschia-sdk@v0.48.1/x/gov/common_test.go (about) 1 package gov_test 2 3 import ( 4 "bytes" 5 "log" 6 "sort" 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 11 "github.com/Finschia/finschia-sdk/crypto/keys/ed25519" 12 cryptotypes "github.com/Finschia/finschia-sdk/crypto/types" 13 sdk "github.com/Finschia/finschia-sdk/types" 14 "github.com/Finschia/finschia-sdk/x/gov/types" 15 stakingtypes "github.com/Finschia/finschia-sdk/x/staking/types" 16 ) 17 18 var ( 19 valTokens = sdk.TokensFromConsensusPower(42, sdk.DefaultPowerReduction) 20 TestProposal = types.NewTextProposal("Test", "description") 21 TestDescription = stakingtypes.NewDescription("T", "E", "S", "T", "Z") 22 TestCommissionRates = stakingtypes.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()) 23 ) 24 25 // SortAddresses - Sorts Addresses 26 func SortAddresses(addrs []sdk.AccAddress) { 27 byteAddrs := make([][]byte, len(addrs)) 28 29 for i, addr := range addrs { 30 byteAddrs[i] = addr.Bytes() 31 } 32 33 SortByteArrays(byteAddrs) 34 35 for i, byteAddr := range byteAddrs { 36 addrs[i] = byteAddr 37 } 38 } 39 40 // implement `Interface` in sort package. 41 type sortByteArrays [][]byte 42 43 func (b sortByteArrays) Len() int { 44 return len(b) 45 } 46 47 func (b sortByteArrays) Less(i, j int) bool { 48 // bytes package already implements Comparable for []byte. 49 switch bytes.Compare(b[i], b[j]) { 50 case -1: 51 return true 52 case 0, 1: 53 return false 54 default: 55 log.Panic("not fail-able with `bytes.Comparable` bounded [-1, 1].") 56 return false 57 } 58 } 59 60 func (b sortByteArrays) Swap(i, j int) { 61 b[j], b[i] = b[i], b[j] 62 } 63 64 // SortByteArrays - sorts the provided byte array 65 func SortByteArrays(src [][]byte) [][]byte { 66 sorted := sortByteArrays(src) 67 sort.Sort(sorted) 68 return sorted 69 } 70 71 const contextKeyBadProposal = "contextKeyBadProposal" 72 73 var pubkeys = []cryptotypes.PubKey{ 74 ed25519.GenPrivKey().PubKey(), 75 ed25519.GenPrivKey().PubKey(), 76 ed25519.GenPrivKey().PubKey(), 77 } 78 79 func createValidators(t *testing.T, stakingHandler sdk.Handler, ctx sdk.Context, addrs []sdk.ValAddress, powerAmt []int64) { 80 require.True(t, len(addrs) <= len(pubkeys), "Not enough pubkeys specified at top of file.") 81 82 for i := 0; i < len(addrs); i++ { 83 valTokens := sdk.TokensFromConsensusPower(powerAmt[i], sdk.DefaultPowerReduction) 84 valCreateMsg, err := stakingtypes.NewMsgCreateValidator( 85 addrs[i], pubkeys[i], sdk.NewCoin(sdk.DefaultBondDenom, valTokens), 86 TestDescription, TestCommissionRates, sdk.OneInt(), 87 ) 88 require.NoError(t, err) 89 handleAndCheck(t, stakingHandler, ctx, valCreateMsg) 90 } 91 } 92 93 func handleAndCheck(t *testing.T, h sdk.Handler, ctx sdk.Context, msg sdk.Msg) { 94 res, err := h(ctx, msg) 95 require.NoError(t, err) 96 require.NotNil(t, res) 97 }