Skip to content

Commit

Permalink
Improve tests
Browse files Browse the repository at this point in the history
  • Loading branch information
evgeniy-scherbina committed May 13, 2024
1 parent 352b584 commit 1a35435
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 10 deletions.
22 changes: 18 additions & 4 deletions precompile/contracts/noop/module.go
Expand Up @@ -5,21 +5,35 @@ import (
"github.com/ethereum/go-ethereum/precompile/modules"
)

// ContractAddress is the defined address of the precompile contract.
// This should be unique across all precompile contracts.
// See precompile/registry/registry.go for registered precompile contracts and more information.
var ContractAddress = common.HexToAddress("0x9000000000000000000000000000000000000001")
var (
// ContractAddress is the defined address of the precompile contract.
// This should be unique across all precompile contracts.
// See precompile/registry/registry.go for registered precompile contracts and more information.
ContractAddress = common.HexToAddress("0x9000000000000000000000000000000000000001")

// ContractAddress2 is a second address on which Noop precompile is enabled, it can be useful for testing purposes.
ContractAddress2 = common.HexToAddress("0x9000000000000000000000000000000000000002")
)

// Module is the precompile module. It is used to register the precompile contract.
var Module = modules.Module{
Address: ContractAddress,
Contract: NoopPrecompile,
}

var Module2 = modules.Module{
Address: ContractAddress2,
Contract: NoopPrecompile,
}

func init() {
// Register the precompile module.
// Each precompile contract registers itself through [RegisterModule] function.
if err := modules.RegisterModule(Module); err != nil {
panic(err)
}

if err := modules.RegisterModule(Module2); err != nil {
panic(err)
}
}
24 changes: 18 additions & 6 deletions tests/e2e/e2e_noop_precompile_test.go
Expand Up @@ -15,13 +15,25 @@ func (suite *IntegrationTestSuite) TestNoopPrecompileInitialization() {
ethClient, err := ethclient.Dial("http://127.0.0.1:8545")
suite.Require().NoError(err)

nonce, err := ethClient.NonceAt(context.Background(), noop.ContractAddress, nil)
suite.Require().NoError(err)
suite.Require().Equal(uint64(1), nonce)
suite.Run("registered and enabled", func() {
nonce, err := ethClient.NonceAt(context.Background(), noop.ContractAddress, nil)
suite.Require().NoError(err)
suite.Require().Equal(uint64(1), nonce)

code, err := ethClient.CodeAt(context.Background(), noop.ContractAddress, nil)
suite.Require().NoError(err)
suite.Require().Equal([]byte{1}, code)
code, err := ethClient.CodeAt(context.Background(), noop.ContractAddress, nil)
suite.Require().NoError(err)
suite.Require().Equal([]byte{1}, code)
})

suite.Run("registered but disabled", func() {
nonce, err := ethClient.NonceAt(context.Background(), noop.ContractAddress2, nil)
suite.Require().NoError(err)
suite.Require().Equal(uint64(0), nonce)

code, err := ethClient.CodeAt(context.Background(), noop.ContractAddress2, nil)
suite.Require().NoError(err)
suite.Require().Empty([]byte{}, code)
})
}

func (suite *IntegrationTestSuite) TestNoopPrecompile_EOAToContractToPrecompile_Success() {
Expand Down

0 comments on commit 1a35435

Please sign in to comment.