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  }