prysm-pulse/sharding/collation_test.go
Preston Van Loon e65be3456d Add getter/setter methods for Collation
Former-commit-id: 7d76aa16fac553b57023f91e808653b202308ad7 [formerly 46a739d7c1caff57beb6abb6285b8ad70db990c6]
Former-commit-id: 1c428340e16ce4b8dad92d89a0f2a6e69872ca0a
2018-02-21 22:39:51 -05:00

82 lines
1.9 KiB
Go

package sharding
import (
"math"
"math/big"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
)
func TestCollation_AddTransactions(t *testing.T) {
tests := []struct {
transactions []*types.Transaction
}{
{
transactions: []*types.Transaction{
makeTxWithGasLimit(0),
makeTxWithGasLimit(1),
makeTxWithGasLimit(2),
makeTxWithGasLimit(3),
},
}, {
transactions: []*types.Transaction{},
},
}
for _, tt := range tests {
c := &Collation{}
for _, tx := range tt.transactions {
c.AddTransaction(tx)
}
results := c.Transactions()
if len(results) != len(tt.transactions) {
t.Fatalf("Wrong number of transactions. want=%d. got=%d", len(tt.transactions), len(results))
}
for i, tx := range tt.transactions {
if results[i] != tx {
t.Fatalf("Mismatched transactions. wanted=%+v. got=%+v", tt.transactions, results)
}
}
}
}
func TestCollation_GasUsed(t *testing.T) {
tests := []struct {
transactions []*types.Transaction
gasUsed *big.Int
}{
{
transactions: []*types.Transaction{
makeTxWithGasLimit(100),
makeTxWithGasLimit(100000),
makeTxWithGasLimit(899900),
},
gasUsed: big.NewInt(1000000),
}, {
transactions: []*types.Transaction{},
gasUsed: big.NewInt(0),
},
{
transactions: []*types.Transaction{
makeTxWithGasLimit(math.MaxUint64),
makeTxWithGasLimit(9001),
makeTxWithGasLimit(math.MaxUint64),
},
gasUsed: big.NewInt(0).SetUint64(math.MaxUint64),
},
}
for _, tt := range tests {
got := (&Collation{transactions: tt.transactions}).GasUsed()
if tt.gasUsed.Cmp(got) != 0 {
t.Errorf("Returned unexpected gasUsed. Got=%v, wanted=%v", got, tt.gasUsed)
}
}
}
func makeTxWithGasLimit(gl uint64) *types.Transaction {
return types.NewTransaction(0 /*nonce*/, common.HexToAddress("0x0") /*to*/, nil /*amount*/, gl, nil /*gasPrice*/, nil /*data*/)
}