71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
package types_test
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/types/address"
|
|
"github.com/cosmos/cosmos-sdk/x/bank/types"
|
|
)
|
|
|
|
func cloneAppend(bz []byte, tail []byte) (res []byte) {
|
|
res = make([]byte, len(bz)+len(tail))
|
|
copy(res, bz)
|
|
copy(res[len(bz):], tail)
|
|
return
|
|
}
|
|
|
|
func TestAddressFromBalancesStore(t *testing.T) {
|
|
addr, err := sdk.AccAddressFromBech32("cosmos1n88uc38xhjgxzw9nwre4ep2c8ga4fjxcar6mn7")
|
|
require.NoError(t, err)
|
|
addrLen := len(addr)
|
|
require.Equal(t, 20, addrLen)
|
|
key := cloneAppend(address.MustLengthPrefix(addr), []byte("stake"))
|
|
|
|
tests := []struct {
|
|
name string
|
|
key []byte
|
|
wantErr bool
|
|
expectedKey sdk.AccAddress
|
|
}{
|
|
{"valid", key, false, addr},
|
|
{"#9111", []byte("\xff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), false, nil},
|
|
{"empty", []byte(""), true, nil},
|
|
{"invalid", []byte("3AA"), true, nil},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
tc := tc
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
addr, denom, err := types.AddressAndDenomFromBalancesStore(tc.key)
|
|
if tc.wantErr {
|
|
assert.Error(t, err)
|
|
assert.True(t, errors.Is(types.ErrInvalidKey, err))
|
|
} else {
|
|
assert.NoError(t, err)
|
|
}
|
|
if len(tc.expectedKey) > 0 {
|
|
assert.Equal(t, tc.expectedKey, addr)
|
|
assert.Equal(t, "stake", denom)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestCreateDenomAddressPrefix(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
key := types.CreateDenomAddressPrefix("")
|
|
require.Len(key, len(types.DenomAddressPrefix)+1)
|
|
require.Equal(append(types.DenomAddressPrefix, 0), key)
|
|
|
|
key = types.CreateDenomAddressPrefix("abc")
|
|
require.Len(key, len(types.DenomAddressPrefix)+4)
|
|
require.Equal(append(types.DenomAddressPrefix, 'a', 'b', 'c', 0), key)
|
|
}
|