cosmos-sdk/x/capability/types/types_test.go

70 lines
1.5 KiB
Go

package types_test
import (
"fmt"
"sort"
"testing"
"github.com/stretchr/testify/require"
"github.com/cosmos/cosmos-sdk/x/capability/types"
)
func TestCapabilityKey(t *testing.T) {
idx := uint64(3162)
cap := types.NewCapability(idx)
require.Equal(t, idx, cap.GetIndex())
require.Equal(t, fmt.Sprintf("Capability{%p, %d}", cap, idx), cap.String())
}
func TestOwner(t *testing.T) {
o := types.NewOwner("bank", "send")
require.Equal(t, "bank/send", o.Key())
require.Equal(t, "module: bank\nname: send\n", o.String())
}
func TestCapabilityOwners_Set(t *testing.T) {
co := types.NewCapabilityOwners()
owners := make([]types.Owner, 1024)
for i := range owners {
var owner types.Owner
if i%2 == 0 {
owner = types.NewOwner("bank", fmt.Sprintf("send-%d", i))
} else {
owner = types.NewOwner("slashing", fmt.Sprintf("slash-%d", i))
}
owners[i] = owner
require.NoError(t, co.Set(owner))
}
sort.Slice(owners, func(i, j int) bool { return owners[i].Key() < owners[j].Key() })
require.Equal(t, owners, co.Owners)
for _, owner := range owners {
require.Error(t, co.Set(owner))
}
}
func TestCapabilityOwners_Remove(t *testing.T) {
co := types.NewCapabilityOwners()
co.Remove(types.NewOwner("bank", "send-0"))
require.Len(t, co.Owners, 0)
for i := 0; i < 5; i++ {
require.NoError(t, co.Set(types.NewOwner("bank", fmt.Sprintf("send-%d", i))))
}
require.Len(t, co.Owners, 5)
for i := 0; i < 5; i++ {
co.Remove(types.NewOwner("bank", fmt.Sprintf("send-%d", i)))
require.Len(t, co.Owners, 5-(i+1))
}
require.Len(t, co.Owners, 0)
}