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 }