laconicd/x/evm/types/statedb_test.go

62 lines
1.5 KiB
Go
Raw Normal View History

package types_test
2019-12-19 06:18:50 +00:00
import (
"math/big"
"github.com/stretchr/testify/suite"
2019-12-19 06:18:50 +00:00
sdk "github.com/cosmos/cosmos-sdk/types"
ethcmn "github.com/ethereum/go-ethereum/common"
ethtypes "github.com/ethereum/go-ethereum/core/types"
"github.com/cosmos/ethermint/app"
"github.com/cosmos/ethermint/x/evm/keeper"
2019-12-19 06:18:50 +00:00
abci "github.com/tendermint/tendermint/abci/types"
)
// nolint: unused
type StateDBTestSuite struct {
suite.Suite
2019-12-19 06:18:50 +00:00
ctx sdk.Context
querier sdk.Querier
app *app.EthermintApp
2019-12-19 06:18:50 +00:00
}
func (suite *StateDBTestSuite) SetupTest() {
checkTx := false
suite.app = app.Setup(checkTx)
suite.ctx = suite.app.BaseApp.NewContext(checkTx, abci.Header{Height: 1})
suite.querier = keeper.NewQuerier(suite.app.EvmKeeper)
2019-12-19 06:18:50 +00:00
}
func (suite *StateDBTestSuite) TestBloomFilter() {
stateDB := suite.app.EvmKeeper.CommitStateDB
2019-12-19 06:18:50 +00:00
// Prepare db for logs
tHash := ethcmn.BytesToHash([]byte{0x1})
stateDB.Prepare(tHash, ethcmn.Hash{}, 0)
2019-12-19 06:18:50 +00:00
contractAddress := ethcmn.BigToAddress(big.NewInt(1))
// Generate and add a log to test
log := ethtypes.Log{Address: contractAddress}
stateDB.AddLog(&log)
// Get log from db
logs, err := stateDB.GetLogs(tHash)
suite.Require().NoError(err)
suite.Require().Equal(len(logs), 1)
2019-12-19 06:18:50 +00:00
// get logs bloom from the log
bloomInt := ethtypes.LogsBloom(logs)
bloomFilter := ethtypes.BytesToBloom(bloomInt.Bytes())
// Check to make sure bloom filter will succeed on
suite.Require().True(ethtypes.BloomLookup(bloomFilter, contractAddress))
suite.Require().False(ethtypes.BloomLookup(bloomFilter, ethcmn.BigToAddress(big.NewInt(2))))
2019-12-19 06:18:50 +00:00
}