github.com/Finschia/finschia-sdk@v0.48.1/x/capability/types/types_test.go (about)

     1  package types_test
     2  
     3  import (
     4  	"fmt"
     5  	"sort"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/require"
     9  
    10  	"github.com/Finschia/finschia-sdk/x/capability/types"
    11  )
    12  
    13  func TestCapabilityKey(t *testing.T) {
    14  	idx := uint64(3162)
    15  	cap := types.NewCapability(idx)
    16  	require.Equal(t, idx, cap.GetIndex())
    17  	require.Equal(t, fmt.Sprintf("Capability{%p, %d}", cap, idx), cap.String())
    18  }
    19  
    20  func TestOwner(t *testing.T) {
    21  	o := types.NewOwner("bank", "send")
    22  	require.Equal(t, "bank/send", o.Key())
    23  	require.Equal(t, "module: bank\nname: send\n", o.String())
    24  }
    25  
    26  func TestCapabilityOwners_Set(t *testing.T) {
    27  	co := types.NewCapabilityOwners()
    28  
    29  	owners := make([]types.Owner, 1024)
    30  	for i := range owners {
    31  		var owner types.Owner
    32  
    33  		if i%2 == 0 {
    34  			owner = types.NewOwner("bank", fmt.Sprintf("send-%d", i))
    35  		} else {
    36  			owner = types.NewOwner("slashing", fmt.Sprintf("slash-%d", i))
    37  		}
    38  
    39  		owners[i] = owner
    40  		require.NoError(t, co.Set(owner))
    41  	}
    42  
    43  	sort.Slice(owners, func(i, j int) bool { return owners[i].Key() < owners[j].Key() })
    44  	require.Equal(t, owners, co.Owners)
    45  
    46  	for _, owner := range owners {
    47  		require.Error(t, co.Set(owner))
    48  	}
    49  }
    50  
    51  func TestCapabilityOwners_Remove(t *testing.T) {
    52  	co := types.NewCapabilityOwners()
    53  
    54  	co.Remove(types.NewOwner("bank", "send-0"))
    55  	require.Len(t, co.Owners, 0)
    56  
    57  	for i := 0; i < 5; i++ {
    58  		require.NoError(t, co.Set(types.NewOwner("bank", fmt.Sprintf("send-%d", i))))
    59  	}
    60  
    61  	require.Len(t, co.Owners, 5)
    62  
    63  	for i := 0; i < 5; i++ {
    64  		co.Remove(types.NewOwner("bank", fmt.Sprintf("send-%d", i)))
    65  		require.Len(t, co.Owners, 5-(i+1))
    66  	}
    67  
    68  	require.Len(t, co.Owners, 0)
    69  }