Make MsgTx test data available to all funcs.
Rather than having to repeat the same data for positive and negative tests, make the same test data available to both.
This commit is contained in:
parent
f9b6375d5b
commit
6f511eb75d
1 changed files with 66 additions and 59 deletions
125
msgtx_test.go
125
msgtx_test.go
|
@ -173,32 +173,6 @@ func TestTxSha(t *testing.T) {
|
||||||
// TestTxWire tests the MsgTx wire encode and decode for various numbers
|
// TestTxWire tests the MsgTx wire encode and decode for various numbers
|
||||||
// of transaction inputs and outputs and protocol versions.
|
// of transaction inputs and outputs and protocol versions.
|
||||||
func TestTxWire(t *testing.T) {
|
func TestTxWire(t *testing.T) {
|
||||||
// Previous transaction output point for coinbase to test.
|
|
||||||
prevOutIndex := uint32(0xffffffff)
|
|
||||||
prevOut := btcwire.NewOutPoint(&btcwire.ShaHash{}, prevOutIndex)
|
|
||||||
|
|
||||||
// Transaction input to test.
|
|
||||||
sigScript := []byte{0x04, 0x31, 0xdc, 0x00, 0x1b, 0x01, 0x62}
|
|
||||||
txIn := btcwire.NewTxIn(prevOut, sigScript)
|
|
||||||
txIn.Sequence = 0xffffffff
|
|
||||||
|
|
||||||
// Transaction output to test.
|
|
||||||
txValue := int64(5000000000)
|
|
||||||
pkScript := []byte{
|
|
||||||
0x41, // OP_DATA_65
|
|
||||||
0x04, 0xd6, 0x4b, 0xdf, 0xd0, 0x9e, 0xb1, 0xc5,
|
|
||||||
0xfe, 0x29, 0x5a, 0xbd, 0xeb, 0x1d, 0xca, 0x42,
|
|
||||||
0x81, 0xbe, 0x98, 0x8e, 0x2d, 0xa0, 0xb6, 0xc1,
|
|
||||||
0xc6, 0xa5, 0x9d, 0xc2, 0x26, 0xc2, 0x86, 0x24,
|
|
||||||
0xe1, 0x81, 0x75, 0xe8, 0x51, 0xc9, 0x6b, 0x97,
|
|
||||||
0x3d, 0x81, 0xb0, 0x1c, 0xc3, 0x1f, 0x04, 0x78,
|
|
||||||
0x34, 0xbc, 0x06, 0xd6, 0xd6, 0xed, 0xf6, 0x20,
|
|
||||||
0xd1, 0x84, 0x24, 0x1a, 0x6a, 0xed, 0x8b, 0x63,
|
|
||||||
0xa6, // 65-byte signature
|
|
||||||
0xac, // OP_CHECKSIG
|
|
||||||
}
|
|
||||||
txOut := btcwire.NewTxOut(txValue, pkScript)
|
|
||||||
|
|
||||||
// Empty tx message.
|
// Empty tx message.
|
||||||
noTx := btcwire.NewMsgTx()
|
noTx := btcwire.NewMsgTx()
|
||||||
noTx.Version = 1
|
noTx.Version = 1
|
||||||
|
@ -209,39 +183,6 @@ func TestTxWire(t *testing.T) {
|
||||||
0x00, 0x00, 0x00, 0x00, // Lock time
|
0x00, 0x00, 0x00, 0x00, // Lock time
|
||||||
}
|
}
|
||||||
|
|
||||||
multiTx := btcwire.NewMsgTx()
|
|
||||||
multiTx.Version = 1
|
|
||||||
multiTx.AddTxIn(txIn)
|
|
||||||
multiTx.AddTxOut(txOut)
|
|
||||||
multiTx.LockTime = 0
|
|
||||||
multiTxEncoded := []byte{
|
|
||||||
0x01, 0x00, 0x00, 0x00, // Version
|
|
||||||
0x01, // Varint for number of input transactions
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Previous output hash
|
|
||||||
0xff, 0xff, 0xff, 0xff, // Prevous output index
|
|
||||||
0x07, // Varint for length of signature script
|
|
||||||
0x04, 0x31, 0xdc, 0x00, 0x1b, 0x01, 0x62, // Signature script
|
|
||||||
0xff, 0xff, 0xff, 0xff, // Sequence
|
|
||||||
0x01, // Varint for number of output transactions
|
|
||||||
0x00, 0xf2, 0x05, 0x2a, 0x01, 0x00, 0x00, 0x00, // Transaction amount
|
|
||||||
0x43, // Varint for length of pk script
|
|
||||||
0x41, // OP_DATA_65
|
|
||||||
0x04, 0xd6, 0x4b, 0xdf, 0xd0, 0x9e, 0xb1, 0xc5,
|
|
||||||
0xfe, 0x29, 0x5a, 0xbd, 0xeb, 0x1d, 0xca, 0x42,
|
|
||||||
0x81, 0xbe, 0x98, 0x8e, 0x2d, 0xa0, 0xb6, 0xc1,
|
|
||||||
0xc6, 0xa5, 0x9d, 0xc2, 0x26, 0xc2, 0x86, 0x24,
|
|
||||||
0xe1, 0x81, 0x75, 0xe8, 0x51, 0xc9, 0x6b, 0x97,
|
|
||||||
0x3d, 0x81, 0xb0, 0x1c, 0xc3, 0x1f, 0x04, 0x78,
|
|
||||||
0x34, 0xbc, 0x06, 0xd6, 0xd6, 0xed, 0xf6, 0x20,
|
|
||||||
0xd1, 0x84, 0x24, 0x1a, 0x6a, 0xed, 0x8b, 0x63,
|
|
||||||
0xa6, // 65-byte signature
|
|
||||||
0xac, // OP_CHECKSIG
|
|
||||||
0x00, 0x00, 0x00, 0x00, // Lock time
|
|
||||||
}
|
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
in *btcwire.MsgTx // Message to encode
|
in *btcwire.MsgTx // Message to encode
|
||||||
out *btcwire.MsgTx // Expected decoded message
|
out *btcwire.MsgTx // Expected decoded message
|
||||||
|
@ -359,3 +300,69 @@ func TestTxWire(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// multiTx is a MsgTx with an input and output and used in various tests.
|
||||||
|
var multiTx *btcwire.MsgTx = &btcwire.MsgTx{
|
||||||
|
Version: 1,
|
||||||
|
TxIn: []*btcwire.TxIn{
|
||||||
|
&btcwire.TxIn{
|
||||||
|
PreviousOutpoint: btcwire.OutPoint{
|
||||||
|
Hash: btcwire.ShaHash{},
|
||||||
|
Index: 0xffffffff,
|
||||||
|
},
|
||||||
|
SignatureScript: []byte{
|
||||||
|
0x04, 0x31, 0xdc, 0x00, 0x1b, 0x01, 0x62,
|
||||||
|
},
|
||||||
|
Sequence: 0xffffffff,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
TxOut: []*btcwire.TxOut{
|
||||||
|
&btcwire.TxOut{
|
||||||
|
Value: 0x12a05f200,
|
||||||
|
PkScript: []byte{
|
||||||
|
0x41, // OP_DATA_65
|
||||||
|
0x04, 0xd6, 0x4b, 0xdf, 0xd0, 0x9e, 0xb1, 0xc5,
|
||||||
|
0xfe, 0x29, 0x5a, 0xbd, 0xeb, 0x1d, 0xca, 0x42,
|
||||||
|
0x81, 0xbe, 0x98, 0x8e, 0x2d, 0xa0, 0xb6, 0xc1,
|
||||||
|
0xc6, 0xa5, 0x9d, 0xc2, 0x26, 0xc2, 0x86, 0x24,
|
||||||
|
0xe1, 0x81, 0x75, 0xe8, 0x51, 0xc9, 0x6b, 0x97,
|
||||||
|
0x3d, 0x81, 0xb0, 0x1c, 0xc3, 0x1f, 0x04, 0x78,
|
||||||
|
0x34, 0xbc, 0x06, 0xd6, 0xd6, 0xed, 0xf6, 0x20,
|
||||||
|
0xd1, 0x84, 0x24, 0x1a, 0x6a, 0xed, 0x8b, 0x63,
|
||||||
|
0xa6, // 65-byte signature
|
||||||
|
0xac, // OP_CHECKSIG
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
LockTime: 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
// multiTxEncoded is the wire encoded bytes for multiTx using protocol version
|
||||||
|
// 60002 and is used in the various tests.
|
||||||
|
var multiTxEncoded []byte = []byte{
|
||||||
|
0x01, 0x00, 0x00, 0x00, // Version
|
||||||
|
0x01, // Varint for number of input transactions
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Previous output hash
|
||||||
|
0xff, 0xff, 0xff, 0xff, // Prevous output index
|
||||||
|
0x07, // Varint for length of signature script
|
||||||
|
0x04, 0x31, 0xdc, 0x00, 0x1b, 0x01, 0x62, // Signature script
|
||||||
|
0xff, 0xff, 0xff, 0xff, // Sequence
|
||||||
|
0x01, // Varint for number of output transactions
|
||||||
|
0x00, 0xf2, 0x05, 0x2a, 0x01, 0x00, 0x00, 0x00, // Transaction amount
|
||||||
|
0x43, // Varint for length of pk script
|
||||||
|
0x41, // OP_DATA_65
|
||||||
|
0x04, 0xd6, 0x4b, 0xdf, 0xd0, 0x9e, 0xb1, 0xc5,
|
||||||
|
0xfe, 0x29, 0x5a, 0xbd, 0xeb, 0x1d, 0xca, 0x42,
|
||||||
|
0x81, 0xbe, 0x98, 0x8e, 0x2d, 0xa0, 0xb6, 0xc1,
|
||||||
|
0xc6, 0xa5, 0x9d, 0xc2, 0x26, 0xc2, 0x86, 0x24,
|
||||||
|
0xe1, 0x81, 0x75, 0xe8, 0x51, 0xc9, 0x6b, 0x97,
|
||||||
|
0x3d, 0x81, 0xb0, 0x1c, 0xc3, 0x1f, 0x04, 0x78,
|
||||||
|
0x34, 0xbc, 0x06, 0xd6, 0xd6, 0xed, 0xf6, 0x20,
|
||||||
|
0xd1, 0x84, 0x24, 0x1a, 0x6a, 0xed, 0x8b, 0x63,
|
||||||
|
0xa6, // 65-byte signature
|
||||||
|
0xac, // OP_CHECKSIG
|
||||||
|
0x00, 0x00, 0x00, 0x00, // Lock time
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue