mirror of https://github.com/ethereum/go-ethereum
* chain manager sets td on block + td output w/ String * added tx pool tests for removing/adding/validating * tx pool now uses a set for txs instead of list.Listpull/229/merge
parent
477a6d426c
commit
48d2a8b8ee
@ -0,0 +1,82 @@ |
||||
package core |
||||
|
||||
import ( |
||||
"crypto/ecdsa" |
||||
"testing" |
||||
|
||||
"github.com/ethereum/go-ethereum/core/types" |
||||
"github.com/ethereum/go-ethereum/crypto" |
||||
"github.com/ethereum/go-ethereum/ethutil" |
||||
"github.com/ethereum/go-ethereum/event" |
||||
"github.com/ethereum/go-ethereum/state" |
||||
) |
||||
|
||||
// State query interface
|
||||
type stateQuery struct{} |
||||
|
||||
func (self stateQuery) GetAccount(addr []byte) *state.StateObject { |
||||
return state.NewStateObject(addr) |
||||
} |
||||
|
||||
// State query interface
|
||||
type invalidStateQuery struct{} |
||||
|
||||
func (self invalidStateQuery) GetAccount(addr []byte) *state.StateObject { |
||||
o := state.NewStateObject(addr) |
||||
o.Nonce++ |
||||
return o |
||||
} |
||||
|
||||
func transaction() *types.Transaction { |
||||
return types.NewTransactionMessage(make([]byte, 20), ethutil.Big0, ethutil.Big0, ethutil.Big0, nil) |
||||
} |
||||
|
||||
func setup() (*TxPool, *ecdsa.PrivateKey) { |
||||
var m event.TypeMux |
||||
key, _ := crypto.GenerateKey() |
||||
return NewTxPool(stateQuery{}, &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.pool.Add(tx1) |
||||
pool.RemoveSet(types.Transactions{tx1}) |
||||
if pool.Size() > 0 { |
||||
t.Error("expected pool size to be 0") |
||||
} |
||||
} |
||||
|
||||
func TestRemoveInvalid(t *testing.T) { |
||||
pool, _ := setup() |
||||
tx1 := transaction() |
||||
pool.pool.Add(tx1) |
||||
pool.RemoveInvalid(invalidStateQuery{}) |
||||
if pool.Size() > 0 { |
||||
t.Error("expected pool size to be 0") |
||||
} |
||||
} |
Loading…
Reference in new issue