cosmos-sdk/codec/address/fuzz_test.go
2024-06-13 09:28:12 +00:00

68 lines
1.2 KiB
Go

package address
import (
"errors"
"testing"
"github.com/stretchr/testify/require"
"cosmossdk.io/core/address"
sdkAddress "github.com/cosmos/cosmos-sdk/types/address"
)
func FuzzCachedAddressCodec(f *testing.F) {
if testing.Short() {
f.Skip()
}
addresses, err := generateAddresses(2)
require.NoError(f, err)
for _, addr := range addresses {
f.Add(addr)
}
cdc, err := NewCachedBech32Codec("cosmos", cacheOptions)
require.NoError(f, err)
f.Fuzz(func(t *testing.T, addr []byte) {
checkAddress(t, addr, cdc)
})
}
func FuzzAddressCodec(f *testing.F) {
if testing.Short() {
f.Skip()
}
addresses, err := generateAddresses(2)
require.NoError(f, err)
for _, addr := range addresses {
f.Add(addr)
}
cdc := Bech32Codec{Bech32Prefix: "cosmos"}
f.Fuzz(func(t *testing.T, addr []byte) {
checkAddress(t, addr, cdc)
})
}
func checkAddress(t *testing.T, addr []byte, cdc address.Codec) {
t.Helper()
if len(addr) > sdkAddress.MaxAddrLen {
return
}
strAddr, err := cdc.BytesToString(addr)
if err != nil {
t.Fatal(err)
}
b, err := cdc.StringToBytes(strAddr)
if err != nil {
if !errors.Is(errEmptyAddress, err) {
t.Fatal(err)
}
}
require.Equal(t, len(addr), len(b))
}