github.com/Finschia/finschia-sdk@v0.48.1/x/staking/types/delegation_test.go (about) 1 package types_test 2 3 import ( 4 "encoding/json" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/require" 9 10 "github.com/Finschia/finschia-sdk/codec" 11 sdk "github.com/Finschia/finschia-sdk/types" 12 "github.com/Finschia/finschia-sdk/x/staking/types" 13 ) 14 15 func TestDelegationEqual(t *testing.T) { 16 d1 := types.NewDelegation(sdk.AccAddress(valAddr1), valAddr2, sdk.NewDec(100)) 17 d2 := d1 18 19 ok := d1.String() == d2.String() 20 require.True(t, ok) 21 22 d2.ValidatorAddress = valAddr3.String() 23 d2.Shares = sdk.NewDec(200) 24 25 ok = d1.String() == d2.String() 26 require.False(t, ok) 27 } 28 29 func TestDelegationString(t *testing.T) { 30 d := types.NewDelegation(sdk.AccAddress(valAddr1), valAddr2, sdk.NewDec(100)) 31 require.NotEmpty(t, d.String()) 32 } 33 34 func TestUnbondingDelegationEqual(t *testing.T) { 35 ubd1 := types.NewUnbondingDelegation(sdk.AccAddress(valAddr1), valAddr2, 0, 36 time.Unix(0, 0), sdk.NewInt(0)) 37 ubd2 := ubd1 38 39 ok := ubd1.String() == ubd2.String() 40 require.True(t, ok) 41 42 ubd2.ValidatorAddress = valAddr3.String() 43 44 ubd2.Entries[0].CompletionTime = time.Unix(20*20*2, 0) 45 ok = (ubd1.String() == ubd2.String()) 46 require.False(t, ok) 47 } 48 49 func TestUnbondingDelegationString(t *testing.T) { 50 ubd := types.NewUnbondingDelegation(sdk.AccAddress(valAddr1), valAddr2, 0, 51 time.Unix(0, 0), sdk.NewInt(0)) 52 53 require.NotEmpty(t, ubd.String()) 54 } 55 56 func TestRedelegationEqual(t *testing.T) { 57 r1 := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0, 58 time.Unix(0, 0), sdk.NewInt(0), 59 sdk.NewDec(0)) 60 r2 := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0, 61 time.Unix(0, 0), sdk.NewInt(0), 62 sdk.NewDec(0)) 63 64 ok := r1.String() == r2.String() 65 require.True(t, ok) 66 67 r2.Entries[0].SharesDst = sdk.NewDec(10) 68 r2.Entries[0].CompletionTime = time.Unix(20*20*2, 0) 69 70 ok = r1.String() == r2.String() 71 require.False(t, ok) 72 } 73 74 func TestRedelegationString(t *testing.T) { 75 r := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0, 76 time.Unix(0, 0), sdk.NewInt(0), 77 sdk.NewDec(10)) 78 79 require.NotEmpty(t, r.String()) 80 } 81 82 func TestDelegationResponses(t *testing.T) { 83 cdc := codec.NewLegacyAmino() 84 dr1 := types.NewDelegationResp(sdk.AccAddress(valAddr1), valAddr2, sdk.NewDec(5), 85 sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(5))) 86 dr2 := types.NewDelegationResp(sdk.AccAddress(valAddr1), valAddr3, sdk.NewDec(5), 87 sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(5))) 88 drs := types.DelegationResponses{dr1, dr2} 89 90 bz1, err := json.Marshal(dr1) 91 require.NoError(t, err) 92 93 bz2, err := cdc.MarshalJSON(dr1) 94 require.NoError(t, err) 95 96 require.Equal(t, bz1, bz2) 97 98 bz1, err = json.Marshal(drs) 99 require.NoError(t, err) 100 101 bz2, err = cdc.MarshalJSON(drs) 102 require.NoError(t, err) 103 104 require.Equal(t, bz1, bz2) 105 106 var drs2 types.DelegationResponses 107 require.NoError(t, cdc.UnmarshalJSON(bz2, &drs2)) 108 require.Equal(t, drs, drs2) 109 } 110 111 func TestRedelegationResponses(t *testing.T) { 112 cdc := codec.NewLegacyAmino() 113 entries := []types.RedelegationEntryResponse{ 114 types.NewRedelegationEntryResponse(0, time.Unix(0, 0), sdk.NewDec(5), sdk.NewInt(5), sdk.NewInt(5)), 115 types.NewRedelegationEntryResponse(0, time.Unix(0, 0), sdk.NewDec(5), sdk.NewInt(5), sdk.NewInt(5)), 116 } 117 rdr1 := types.NewRedelegationResponse(sdk.AccAddress(valAddr1), valAddr2, valAddr3, entries) 118 rdr2 := types.NewRedelegationResponse(sdk.AccAddress(valAddr2), valAddr1, valAddr3, entries) 119 rdrs := types.RedelegationResponses{rdr1, rdr2} 120 121 bz1, err := json.Marshal(rdr1) 122 require.NoError(t, err) 123 124 bz2, err := cdc.MarshalJSON(rdr1) 125 require.NoError(t, err) 126 127 require.Equal(t, bz1, bz2) 128 129 bz1, err = json.Marshal(rdrs) 130 require.NoError(t, err) 131 132 bz2, err = cdc.MarshalJSON(rdrs) 133 require.NoError(t, err) 134 135 require.Equal(t, bz1, bz2) 136 137 var rdrs2 types.RedelegationResponses 138 require.NoError(t, cdc.UnmarshalJSON(bz2, &rdrs2)) 139 140 bz3, err := cdc.MarshalJSON(rdrs2) 141 require.NoError(t, err) 142 143 require.Equal(t, bz2, bz3) 144 }