package state import ( "os" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/crypto/ed25519" cmn "github.com/tendermint/tendermint/libs/common" dbm "github.com/tendermint/tendermint/libs/db" "github.com/tendermint/tendermint/types" tmtime "github.com/tendermint/tendermint/types/time" ) func TestTxFilter(t *testing.T) { genDoc := randomGenesisDoc() genDoc.ConsensusParams.BlockSize.MaxBytes = 3000 testCases := []struct { tx types.Tx isTxValid bool }{ {types.Tx(cmn.RandBytes(250)), true}, {types.Tx(cmn.RandBytes(3001)), false}, } for i, tc := range testCases { stateDB := dbm.NewDB("state", "memdb", os.TempDir()) state, err := LoadStateFromDBOrGenesisDoc(stateDB, genDoc) require.NoError(t, err) f := TxFilter(state) assert.Equal(t, tc.isTxValid, f(tc.tx), "#%v", i) } } func randomGenesisDoc() *types.GenesisDoc { pubkey := ed25519.GenPrivKey().PubKey() return &types.GenesisDoc{ GenesisTime: tmtime.Now(), ChainID: "abc", Validators: []types.GenesisValidator{{pubkey.Address(), pubkey, 10, "myval"}}, ConsensusParams: types.DefaultConsensusParams(), } }