laconicd/x/evm/types/tx_data_test.go

71 lines
1.5 KiB
Go
Raw Normal View History

package types
import (
"math/big"
"testing"
"github.com/stretchr/testify/require"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/ethereum/go-ethereum/common"
"github.com/tharsis/ethermint/tests"
)
func TestTxData_chainID(t *testing.T) {
chainID := sdk.NewInt(1)
testCases := []struct {
msg string
data TxData
expChainID *big.Int
}{
{
"access list tx", &AccessListTx{Accesses: AccessList{}, ChainID: &chainID}, big.NewInt(1),
},
{
"access list tx, nil chain ID", &AccessListTx{Accesses: AccessList{}}, nil,
},
{
"legacy tx, derived", &LegacyTx{}, nil,
},
}
for _, tc := range testCases {
chainID := tc.data.GetChainID()
require.Equal(t, chainID, tc.expChainID, tc.msg)
}
}
func TestTxData_DeriveChainID(t *testing.T) {
testCases := []struct {
msg string
data TxData
expChainID *big.Int
from common.Address
}{
{
"v = 0", &AccessListTx{V: big.NewInt(0).Bytes()}, nil, tests.GenerateAddress(),
},
{
"v = 1", &AccessListTx{V: big.NewInt(1).Bytes()}, big.NewInt(9223372036854775791), tests.GenerateAddress(),
},
{
"v = 27", &AccessListTx{V: big.NewInt(27).Bytes()}, new(big.Int), tests.GenerateAddress(),
},
{
"v = 28", &AccessListTx{V: big.NewInt(28).Bytes()}, new(big.Int), tests.GenerateAddress(),
},
{
"v = nil ", &AccessListTx{V: nil}, nil, tests.GenerateAddress(),
},
}
for _, tc := range testCases {
v, _, _ := tc.data.GetRawSignatureValues()
chainID := DeriveChainID(v)
require.Equal(t, tc.expChainID, chainID, tc.msg)
}
}