mirror of
https://github.com/filecoin-project/lotus.git
synced 2025-08-24 01:08:42 +08:00
63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package eth
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/hex"
|
|
"testing"
|
|
|
|
"github.com/multiformats/go-multicodec"
|
|
"github.com/stretchr/testify/require"
|
|
cbg "github.com/whyrusleeping/cbor-gen"
|
|
)
|
|
|
|
func TestABIEncoding(t *testing.T) {
|
|
// Generated from https://abi.hashex.org/
|
|
const expected = "000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000510000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001b1111111111111111111020200301000000044444444444444444010000000000"
|
|
const data = "111111111111111111102020030100000004444444444444444401"
|
|
|
|
expectedBytes, err := hex.DecodeString(expected)
|
|
require.NoError(t, err)
|
|
|
|
dataBytes, err := hex.DecodeString(data)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, expectedBytes, encodeAsABIHelper(22, 81, dataBytes))
|
|
}
|
|
|
|
func TestDecodePayload(t *testing.T) {
|
|
// "empty"
|
|
b, err := decodePayload(nil, 0)
|
|
require.NoError(t, err)
|
|
require.Empty(t, b)
|
|
|
|
// raw empty
|
|
_, err = decodePayload(nil, uint64(multicodec.Raw))
|
|
require.NoError(t, err)
|
|
require.Empty(t, b)
|
|
|
|
// raw non-empty
|
|
b, err = decodePayload([]byte{1}, uint64(multicodec.Raw))
|
|
require.NoError(t, err)
|
|
require.EqualValues(t, b, []byte{1})
|
|
|
|
// Invalid cbor bytes
|
|
_, err = decodePayload(nil, uint64(multicodec.DagCbor))
|
|
require.Error(t, err)
|
|
|
|
// valid cbor bytes
|
|
var w bytes.Buffer
|
|
require.NoError(t, cbg.WriteByteArray(&w, []byte{1}))
|
|
b, err = decodePayload(w.Bytes(), uint64(multicodec.DagCbor))
|
|
require.NoError(t, err)
|
|
require.EqualValues(t, b, []byte{1})
|
|
|
|
// regular cbor also works.
|
|
b, err = decodePayload(w.Bytes(), uint64(multicodec.Cbor))
|
|
require.NoError(t, err)
|
|
require.EqualValues(t, b, []byte{1})
|
|
|
|
// random codec should fail
|
|
_, err = decodePayload(w.Bytes(), 42)
|
|
require.Error(t, err)
|
|
}
|