mirror of
https://github.com/luxfi/evmgpu.git
synced 2026-10-30 16:57:11 +00:00
186 lines
4.4 KiB
Go
186 lines
4.4 KiB
Go
// Copyright (C) 2019-2025, Lux Industries, Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package header
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/luxfi/evmgpu/commontype"
|
|
"github.com/luxfi/evmgpu/params/extras"
|
|
"github.com/luxfi/geth/core/types"
|
|
ethparams "github.com/luxfi/geth/params"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestGasLimit(t *testing.T) {
|
|
t.Run("normal", func(t *testing.T) {
|
|
GasLimitTest(t, testFeeConfig)
|
|
})
|
|
t.Run("double", func(t *testing.T) {
|
|
GasLimitTest(t, testFeeConfigDouble)
|
|
})
|
|
}
|
|
|
|
func GasLimitTest(t *testing.T, feeConfig commontype.FeeConfig) {
|
|
tests := []struct {
|
|
name string
|
|
upgrades extras.NetworkUpgrades
|
|
parent *types.Header
|
|
timestamp uint64
|
|
want uint64
|
|
wantErr error
|
|
}{
|
|
{
|
|
name: "chain_evm",
|
|
upgrades: extras.TestEVMChainConfig.NetworkUpgrades,
|
|
want: feeConfig.GasLimit.Uint64(),
|
|
},
|
|
{
|
|
name: "pre_chain_evm",
|
|
upgrades: extras.TestPreEVMChainConfig.NetworkUpgrades,
|
|
parent: &types.Header{
|
|
GasLimit: 1,
|
|
},
|
|
want: 1, // Same as parent
|
|
},
|
|
}
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
config := &extras.ChainConfig{
|
|
NetworkUpgrades: test.upgrades,
|
|
}
|
|
got, err := GasLimit(config, feeConfig, test.parent, test.timestamp)
|
|
require.ErrorIs(err, test.wantErr)
|
|
require.Equal(test.want, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestVerifyGasLimit(t *testing.T) {
|
|
t.Run("normal", func(t *testing.T) {
|
|
VerifyGasLimitTest(t, testFeeConfig)
|
|
})
|
|
t.Run("double", func(t *testing.T) {
|
|
VerifyGasLimitTest(t, testFeeConfigDouble)
|
|
})
|
|
}
|
|
|
|
func VerifyGasLimitTest(t *testing.T, feeConfig commontype.FeeConfig) {
|
|
tests := []struct {
|
|
name string
|
|
upgrades extras.NetworkUpgrades
|
|
parent *types.Header
|
|
header *types.Header
|
|
want error
|
|
}{
|
|
{
|
|
name: "chain_evm_valid",
|
|
upgrades: extras.TestEVMChainConfig.NetworkUpgrades,
|
|
header: &types.Header{
|
|
GasLimit: feeConfig.GasLimit.Uint64(),
|
|
},
|
|
},
|
|
{
|
|
name: "chain_evm_invalid",
|
|
upgrades: extras.TestEVMChainConfig.NetworkUpgrades,
|
|
header: &types.Header{
|
|
GasLimit: feeConfig.GasLimit.Uint64() + 1,
|
|
},
|
|
want: errInvalidGasLimit,
|
|
},
|
|
{
|
|
name: "pre_chain_evm_valid",
|
|
upgrades: extras.TestPreEVMChainConfig.NetworkUpgrades,
|
|
parent: &types.Header{
|
|
GasLimit: 50_000,
|
|
},
|
|
header: &types.Header{
|
|
GasLimit: 50_001, // Gas limit is allowed to change by 1/1024
|
|
},
|
|
},
|
|
{
|
|
name: "pre_chain_evm_too_low",
|
|
upgrades: extras.TestPreEVMChainConfig.NetworkUpgrades,
|
|
parent: &types.Header{
|
|
GasLimit: ethparams.MinGasLimit,
|
|
},
|
|
header: &types.Header{
|
|
GasLimit: ethparams.MinGasLimit - 1,
|
|
},
|
|
want: errInvalidGasLimit,
|
|
},
|
|
{
|
|
name: "pre_chain_evm_too_high",
|
|
upgrades: extras.TestPreEVMChainConfig.NetworkUpgrades,
|
|
parent: &types.Header{
|
|
GasLimit: ethparams.MaxGasLimit,
|
|
},
|
|
header: &types.Header{
|
|
GasLimit: ethparams.MaxGasLimit + 1,
|
|
},
|
|
want: errInvalidGasLimit,
|
|
},
|
|
{
|
|
name: "pre_chain_evm_too_large",
|
|
upgrades: extras.TestPreEVMChainConfig.NetworkUpgrades,
|
|
parent: &types.Header{
|
|
GasLimit: ethparams.MinGasLimit,
|
|
},
|
|
header: &types.Header{
|
|
GasLimit: ethparams.MaxGasLimit,
|
|
},
|
|
want: errInvalidGasLimit,
|
|
},
|
|
}
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
config := &extras.ChainConfig{
|
|
NetworkUpgrades: test.upgrades,
|
|
}
|
|
err := VerifyGasLimit(config, feeConfig, test.parent, test.header)
|
|
require.ErrorIs(t, err, test.want)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGasCapacity(t *testing.T) {
|
|
t.Run("normal", func(t *testing.T) {
|
|
GasCapacityTest(t, testFeeConfig)
|
|
})
|
|
t.Run("double", func(t *testing.T) {
|
|
GasCapacityTest(t, testFeeConfigDouble)
|
|
})
|
|
}
|
|
|
|
func GasCapacityTest(t *testing.T, feeConfig commontype.FeeConfig) {
|
|
tests := []struct {
|
|
name string
|
|
upgrades extras.NetworkUpgrades
|
|
parent *types.Header
|
|
timestamp uint64
|
|
want uint64
|
|
wantErr error
|
|
}{
|
|
{
|
|
name: "chain_evm",
|
|
upgrades: extras.TestEVMChainConfig.NetworkUpgrades,
|
|
want: feeConfig.GasLimit.Uint64(),
|
|
},
|
|
}
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
config := &extras.ChainConfig{
|
|
NetworkUpgrades: test.upgrades,
|
|
}
|
|
got, err := GasCapacity(config, feeConfig, test.parent, test.timestamp)
|
|
require.ErrorIs(err, test.wantErr)
|
|
require.Equal(test.want, got)
|
|
})
|
|
}
|
|
}
|