| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package core
- import (
- "crypto/ecdsa"
- "math/big"
- "testing"
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/state"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/ethdb"
- "github.com/ethereum/go-ethereum/event"
- )
- // State query interface
- type stateQuery struct{ db common.Database }
- func SQ() stateQuery {
- db, _ := ethdb.NewMemDatabase()
- return stateQuery{db: db}
- }
- func (self stateQuery) GetAccount(addr []byte) *state.StateObject {
- return state.NewStateObject(common.BytesToAddress(addr), self.db)
- }
- func transaction() *types.Transaction {
- return types.NewTransactionMessage(common.Address{}, common.Big0, common.Big0, common.Big0, nil)
- }
- func setup() (*TxPool, *ecdsa.PrivateKey) {
- var m event.TypeMux
- key, _ := crypto.GenerateKey()
- return NewTxPool(&m), key
- }
- func TestTxAdding(t *testing.T) {
- pool, key := setup()
- tx1 := transaction()
- tx1.SignECDSA(key)
- err := pool.Add(tx1)
- if err != nil {
- t.Error(err)
- }
- err = pool.Add(tx1)
- if err == nil {
- t.Error("added tx twice")
- }
- }
- func TestAddInvalidTx(t *testing.T) {
- pool, _ := setup()
- tx1 := transaction()
- err := pool.Add(tx1)
- if err == nil {
- t.Error("expected error")
- }
- }
- func TestRemoveSet(t *testing.T) {
- pool, _ := setup()
- tx1 := transaction()
- pool.addTx(tx1)
- pool.RemoveSet(types.Transactions{tx1})
- if pool.Size() > 0 {
- t.Error("expected pool size to be 0")
- }
- }
- func TestRemoveInvalid(t *testing.T) {
- pool, key := setup()
- tx1 := transaction()
- pool.addTx(tx1)
- pool.RemoveInvalid(SQ())
- if pool.Size() > 0 {
- t.Error("expected pool size to be 0")
- }
- tx1.SetNonce(1)
- tx1.SignECDSA(key)
- pool.addTx(tx1)
- pool.RemoveInvalid(SQ())
- if pool.Size() != 1 {
- t.Error("expected pool size to be 1, is", pool.Size())
- }
- }
- func TestInvalidSender(t *testing.T) {
- pool, _ := setup()
- tx := new(types.Transaction)
- tx.R = new(big.Int)
- tx.S = new(big.Int)
- err := pool.ValidateTransaction(tx)
- if err != ErrInvalidSender {
- t.Errorf("expected %v, got %v", ErrInvalidSender, err)
- }
- }
|