* changelog * ... * decimal func working * decimal complete, untested * fixing tests * decimal compile errors resolved * test compile errors * precision multiplier test * 1% laptop battery * fixed TestNewDecFromStr * equalities working * fix bankers round chop * ... * working, some decimal issues resolved * fix rounding error * rounding works * decimal works * ... * deleted rational * rational conversion working * revert changelog * code compiles (not tests) * went through all NewDec, made sure they were converted from NewRat properly * test debugging * all testing bugs besides the json marshalling fixed * json unmarshal * lint * document update * fix lcd test * cli test fix * mostly undo Dece -> Rate * val comments * Efficiency improvements This now caches all of the precision multipliers (as they were all used in non-mutative functions), and caches the precisionInt calculation. (Now it just copies the already calculated value) * Cache another precisionInt() call. * Improve banker rounding efficiency * remove defer, make negation in-place. * chris val comments * bez comments * Aditya comments * ... * val comments * rebasing start * ... * compiling * tests pass * cli fix * anton, cwgoes, val comments * val and jae comments * type * undo reuse quo
30 lines
973 B
Go
30 lines
973 B
Go
package slashing
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/x/stake"
|
|
)
|
|
|
|
func TestCannotUnrevokeUnlessRevoked(t *testing.T) {
|
|
// initial setup
|
|
ctx, ck, sk, _, keeper := createTestInput(t)
|
|
slh := NewHandler(keeper)
|
|
amtInt := int64(100)
|
|
addr, val, amt := addrs[0], pks[0], sdk.NewInt(amtInt)
|
|
msg := newTestMsgCreateValidator(addr, val, amt)
|
|
got := stake.NewHandler(sk)(ctx, msg)
|
|
require.True(t, got.IsOK())
|
|
stake.EndBlocker(ctx, sk)
|
|
require.Equal(t, ck.GetCoins(ctx, addr), sdk.Coins{{sk.GetParams(ctx).BondDenom, initCoins.Sub(amt)}})
|
|
require.True(t, sdk.NewDecFromInt(amt).Equal(sk.Validator(ctx, addr).GetPower()))
|
|
|
|
// assert non-revoked validator can't be unrevoked
|
|
got = slh(ctx, NewMsgUnrevoke(addr))
|
|
require.False(t, got.IsOK(), "allowed unrevoke of non-revoked validator")
|
|
require.Equal(t, sdk.ToABCICode(DefaultCodespace, CodeValidatorNotRevoked), got.Code)
|
|
}
|