From b7b700fd5aebb86addc93efecaa367a2f4976058 Mon Sep 17 00:00:00 2001
From: Dave Collins <davec@conformal.com>
Date: Thu, 31 Oct 2013 00:18:34 -0500
Subject: [PATCH] Add tests for the new SerializeSize functions.

This commit adds tests for the new SerializeSize functions for variable
length integers and transactions (and indirectly transaction inputs and
outputs).
---
 common_test.go    |  35 +++++++++++
 internal_test.go  |   6 ++
 msgtx_test.go     |  29 +++++++++
 test_coverage.txt | 150 ++++++++++++++++++++++++----------------------
 4 files changed, 147 insertions(+), 73 deletions(-)

diff --git a/common_test.go b/common_test.go
index e424044e..29a65d41 100644
--- a/common_test.go
+++ b/common_test.go
@@ -144,6 +144,41 @@ func TestVarIntWireErrors(t *testing.T) {
 	}
 }
 
+// TestVarIntWire tests the serialize size for variable length integers.
+func TestVarIntSerializeSize(t *testing.T) {
+	tests := []struct {
+		val  uint64 // Value to get the serialized size for
+		size int    // Expected serialized size
+	}{
+		// Single byte
+		{0, 1},
+		// Max single byte
+		{0xfc, 1},
+		// Min 2-byte
+		{0xfd, 3},
+		// Max 2-byte
+		{0xffff, 3},
+		// Min 4-byte
+		{0x10000, 5},
+		// Max 4-byte
+		{0xffffffff, 5},
+		// Min 8-byte
+		{0x100000000, 9},
+		// Max 8-byte
+		{0xffffffffffffffff, 9},
+	}
+
+	t.Logf("Running %d tests", len(tests))
+	for i, test := range tests {
+		serializedSize := btcwire.TstVarIntSerializeSize(test.val)
+		if serializedSize != test.size {
+			t.Errorf("varIntSerializeSize #%d got: %d, want: %d", i,
+				serializedSize, test.size)
+			continue
+		}
+	}
+}
+
 // TestVarStringWire tests wire encode and decode for variable length strings.
 func TestVarStringWire(t *testing.T) {
 	pver := btcwire.ProtocolVersion
diff --git a/internal_test.go b/internal_test.go
index a9619b50..fddc6b27 100644
--- a/internal_test.go
+++ b/internal_test.go
@@ -37,6 +37,12 @@ func TstWriteVarInt(w io.Writer, pver uint32, val uint64) error {
 	return writeVarInt(w, pver, val)
 }
 
+// TstVarIntSerializeSize makes the internal varIntSerializeSize function
+// available to the test package.
+func TstVarIntSerializeSize(val uint64) int {
+	return varIntSerializeSize(val)
+}
+
 // TstReadVarString makes the internal readVarString function available to the
 // test package.
 func TstReadVarString(r io.Reader, pver uint32) (string, error) {
diff --git a/msgtx_test.go b/msgtx_test.go
index 64535a81..520b90b3 100644
--- a/msgtx_test.go
+++ b/msgtx_test.go
@@ -587,6 +587,35 @@ func TestTxOverflowErrors(t *testing.T) {
 	}
 }
 
+// TestTxSerializeSize performs tests to ensure the serialize size for various
+// transactions is accurate.
+func TestTxSerializeSize(t *testing.T) {
+	// Empty tx message.
+	noTx := btcwire.NewMsgTx()
+	noTx.Version = 1
+
+	tests := []struct {
+		in   *btcwire.MsgTx // Tx to encode
+		size int            // Expected serialized size
+	}{
+		// No inputs or outpus.
+		{noTx, 10},
+
+		// Transcaction with an input and an output.
+		{multiTx, 134},
+	}
+
+	t.Logf("Running %d tests", len(tests))
+	for i, test := range tests {
+		serializedSize := test.in.SerializeSize()
+		if serializedSize != test.size {
+			t.Errorf("MsgTx.SerializeSize: #%d got: %d, want: %d", i,
+				serializedSize, test.size)
+			continue
+		}
+	}
+}
+
 // multiTx is a MsgTx with an input and output and used in various tests.
 var multiTx = &btcwire.MsgTx{
 	Version: 1,
diff --git a/test_coverage.txt b/test_coverage.txt
index 3d90c5bd..cc07fa26 100644
--- a/test_coverage.txt
+++ b/test_coverage.txt
@@ -3,156 +3,160 @@ github.com/conformal/btcwire/message.go		 ReadMessage				 100.00% (37/37)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.BtcDecode			 100.00% (33/33)
 github.com/conformal/btcwire/message.go		 WriteMessage				 100.00% (31/31)
 github.com/conformal/btcwire/msgversion.go	 MsgVersion.BtcDecode			 100.00% (25/25)
-github.com/conformal/btcwire/common.go		 readVarInt				 100.00% (24/24)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.Copy				 100.00% (24/24)
+github.com/conformal/btcwire/common.go		 readVarInt				 100.00% (24/24)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.BtcEncode			 100.00% (23/23)
 github.com/conformal/btcwire/msgversion.go	 MsgVersion.BtcEncode			 100.00% (22/22)
-github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.BtcDecode		 100.00% (20/20)
-github.com/conformal/btcwire/msggetblocks.go	 MsgGetBlocks.BtcDecode			 100.00% (20/20)
 github.com/conformal/btcwire/msgtx.go		 readTxIn				 100.00% (20/20)
+github.com/conformal/btcwire/msggetblocks.go	 MsgGetBlocks.BtcDecode			 100.00% (20/20)
+github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.BtcDecode		 100.00% (20/20)
 github.com/conformal/btcwire/netaddress.go	 readNetAddress				 100.00% (20/20)
 github.com/conformal/btcwire/message.go		 makeEmptyMessage			 100.00% (20/20)
 github.com/conformal/btcwire/msgblock.go	 MsgBlock.DeserializeTxLoc		 100.00% (19/19)
-github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.BtcEncode		 100.00% (18/18)
 github.com/conformal/btcwire/msggetblocks.go	 MsgGetBlocks.BtcEncode			 100.00% (18/18)
+github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.BtcEncode		 100.00% (18/18)
 github.com/conformal/btcwire/msgheaders.go	 MsgHeaders.BtcDecode			 100.00% (17/17)
-github.com/conformal/btcwire/msgblock.go	 MsgBlock.BtcDecode			 100.00% (15/15)
-github.com/conformal/btcwire/msgtx.go		 readTxOut				 100.00% (15/15)
-github.com/conformal/btcwire/msgaddr.go		 MsgAddr.BtcEncode			 100.00% (15/15)
 github.com/conformal/btcwire/shahash.go		 NewShaHashFromStr			 100.00% (15/15)
 github.com/conformal/btcwire/msgheaders.go	 MsgHeaders.BtcEncode			 100.00% (15/15)
+github.com/conformal/btcwire/msgblock.go	 MsgBlock.BtcDecode			 100.00% (15/15)
+github.com/conformal/btcwire/msgaddr.go		 MsgAddr.BtcEncode			 100.00% (15/15)
+github.com/conformal/btcwire/msgtx.go		 readTxOut				 100.00% (15/15)
 github.com/conformal/btcwire/msgtx.go		 writeTxIn				 100.00% (15/15)
-github.com/conformal/btcwire/msginv.go		 MsgInv.BtcDecode			 100.00% (14/14)
 github.com/conformal/btcwire/msgaddr.go		 MsgAddr.BtcDecode			 100.00% (14/14)
 github.com/conformal/btcwire/netaddress.go	 writeNetAddress			 100.00% (14/14)
+github.com/conformal/btcwire/msginv.go		 MsgInv.BtcDecode			 100.00% (14/14)
 github.com/conformal/btcwire/msggetdata.go	 MsgGetData.BtcDecode			 100.00% (14/14)
 github.com/conformal/btcwire/msgnotfound.go	 MsgNotFound.BtcDecode			 100.00% (14/14)
 github.com/conformal/btcwire/msginv.go		 MsgInv.BtcEncode			 100.00% (12/12)
 github.com/conformal/btcwire/msgnotfound.go	 MsgNotFound.BtcEncode			 100.00% (12/12)
-github.com/conformal/btcwire/msggetdata.go	 MsgGetData.BtcEncode			 100.00% (12/12)
 github.com/conformal/btcwire/protocol.go	 ServiceFlag.String			 100.00% (12/12)
-github.com/conformal/btcwire/common.go		 readVarString				 100.00% (11/11)
+github.com/conformal/btcwire/msggetdata.go	 MsgGetData.BtcEncode			 100.00% (12/12)
 github.com/conformal/btcwire/msgtx.go		 writeTxOut				 100.00% (11/11)
-github.com/conformal/btcwire/blockheader.go	 readBlockHeader			 100.00% (10/10)
+github.com/conformal/btcwire/common.go		 readVarString				 100.00% (11/11)
 github.com/conformal/btcwire/message.go		 discardInput				 100.00% (10/10)
+github.com/conformal/btcwire/blockheader.go	 readBlockHeader			 100.00% (10/10)
 github.com/conformal/btcwire/msgblock.go	 MsgBlock.BtcEncode			 100.00% (9/9)
-github.com/conformal/btcwire/msgalert.go	 MsgAlert.BtcEncode			 100.00% (8/8)
 github.com/conformal/btcwire/msgalert.go	 MsgAlert.BtcDecode			 100.00% (8/8)
 github.com/conformal/btcwire/blockheader.go	 writeBlockHeader			 100.00% (8/8)
-github.com/conformal/btcwire/message.go		 readMessageHeader			 100.00% (7/7)
-github.com/conformal/btcwire/common.go		 randomUint64				 100.00% (7/7)
+github.com/conformal/btcwire/msgalert.go	 MsgAlert.BtcEncode			 100.00% (8/8)
 github.com/conformal/btcwire/common.go		 writeVarInt				 100.00% (7/7)
-github.com/conformal/btcwire/msgpong.go		 MsgPong.BtcEncode			 100.00% (7/7)
-github.com/conformal/btcwire/common.go		 writeVarString				 100.00% (7/7)
+github.com/conformal/btcwire/common.go		 varIntSerializeSize			 100.00% (7/7)
 github.com/conformal/btcwire/msgpong.go		 MsgPong.BtcDecode			 100.00% (7/7)
+github.com/conformal/btcwire/common.go		 randomUint64				 100.00% (7/7)
+github.com/conformal/btcwire/msgpong.go		 MsgPong.BtcEncode			 100.00% (7/7)
+github.com/conformal/btcwire/message.go		 readMessageHeader			 100.00% (7/7)
+github.com/conformal/btcwire/common.go		 writeVarString				 100.00% (7/7)
 github.com/conformal/btcwire/msgversion.go	 NewMsgVersionFromConn			 100.00% (7/7)
+github.com/conformal/btcwire/msgtx.go		 MsgTx.SerializeSize			 100.00% (6/6)
 github.com/conformal/btcwire/common.go		 DoubleSha256				 100.00% (6/6)
-github.com/conformal/btcwire/msgnotfound.go	 MsgNotFound.AddInvVect			 100.00% (5/5)
-github.com/conformal/btcwire/msgaddr.go		 MsgAddr.AddAddress			 100.00% (5/5)
-github.com/conformal/btcwire/msginv.go		 MsgInv.AddInvVect			 100.00% (5/5)
-github.com/conformal/btcwire/msggetblocks.go	 MsgGetBlocks.AddBlockLocatorHash	 100.00% (5/5)
-github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.AddBlockLocatorHash	 100.00% (5/5)
 github.com/conformal/btcwire/shahash.go		 NewShaHash				 100.00% (5/5)
-github.com/conformal/btcwire/msgheaders.go	 MsgHeaders.AddBlockHeader		 100.00% (5/5)
-github.com/conformal/btcwire/msggetdata.go	 MsgGetData.AddInvVect			 100.00% (5/5)
-github.com/conformal/btcwire/blockheader.go	 BlockHeader.BlockSha			 100.00% (5/5)
+github.com/conformal/btcwire/msgnotfound.go	 MsgNotFound.AddInvVect			 100.00% (5/5)
 github.com/conformal/btcwire/shahash.go		 ShaHash.SetBytes			 100.00% (5/5)
+github.com/conformal/btcwire/msggetblocks.go	 MsgGetBlocks.AddBlockLocatorHash	 100.00% (5/5)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.TxSha				 100.00% (5/5)
 github.com/conformal/btcwire/common.go		 readElements				 100.00% (5/5)
-github.com/conformal/btcwire/common.go		 writeElements				 100.00% (5/5)
-github.com/conformal/btcwire/msgping.go		 MsgPing.BtcEncode			 100.00% (5/5)
-github.com/conformal/btcwire/msgping.go		 MsgPing.BtcDecode			 100.00% (5/5)
-github.com/conformal/btcwire/netaddress.go	 NewNetAddress				 100.00% (5/5)
 github.com/conformal/btcwire/msgblock.go	 MsgBlock.TxShas			 100.00% (5/5)
+github.com/conformal/btcwire/blockheader.go	 BlockHeader.BlockSha			 100.00% (5/5)
+github.com/conformal/btcwire/msggetdata.go	 MsgGetData.AddInvVect			 100.00% (5/5)
+github.com/conformal/btcwire/msginv.go		 MsgInv.AddInvVect			 100.00% (5/5)
+github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.AddBlockLocatorHash	 100.00% (5/5)
+github.com/conformal/btcwire/msgping.go		 MsgPing.BtcDecode			 100.00% (5/5)
+github.com/conformal/btcwire/common.go		 writeElements				 100.00% (5/5)
+github.com/conformal/btcwire/msgaddr.go		 MsgAddr.AddAddress			 100.00% (5/5)
+github.com/conformal/btcwire/msgping.go		 MsgPing.BtcEncode			 100.00% (5/5)
+github.com/conformal/btcwire/netaddress.go	 NewNetAddress				 100.00% (5/5)
+github.com/conformal/btcwire/msgheaders.go	 MsgHeaders.AddBlockHeader		 100.00% (5/5)
 github.com/conformal/btcwire/msgaddr.go		 MsgAddr.AddAddresses			 100.00% (5/5)
-github.com/conformal/btcwire/invvect.go		 readInvVect				 100.00% (4/4)
-github.com/conformal/btcwire/invvect.go		 writeInvVect				 100.00% (4/4)
-github.com/conformal/btcwire/msgmempool.go	 MsgMemPool.BtcDecode			 100.00% (4/4)
 github.com/conformal/btcwire/msgmempool.go	 MsgMemPool.BtcEncode			 100.00% (4/4)
 github.com/conformal/btcwire/msgping.go		 MsgPing.MaxPayloadLength		 100.00% (4/4)
 github.com/conformal/btcwire/msgpong.go		 MsgPong.MaxPayloadLength		 100.00% (4/4)
+github.com/conformal/btcwire/invvect.go		 readInvVect				 100.00% (4/4)
+github.com/conformal/btcwire/invvect.go		 writeInvVect				 100.00% (4/4)
 github.com/conformal/btcwire/msgtx.go		 readOutPoint				 100.00% (4/4)
 github.com/conformal/btcwire/msgtx.go		 writeOutPoint				 100.00% (4/4)
 github.com/conformal/btcwire/netaddress.go	 maxNetAddressPayload			 100.00% (4/4)
 github.com/conformal/btcwire/shahash.go		 ShaHash.String				 100.00% (4/4)
+github.com/conformal/btcwire/msgmempool.go	 MsgMemPool.BtcDecode			 100.00% (4/4)
 github.com/conformal/btcwire/shahash.go		 ShaHash.Bytes				 100.00% (3/3)
 github.com/conformal/btcwire/error.go		 MessageError.Error			 100.00% (3/3)
-github.com/conformal/btcwire/msgversion.go	 MsgVersion.HasService			 100.00% (3/3)
 github.com/conformal/btcwire/msgaddr.go		 MsgAddr.MaxPayloadLength		 100.00% (3/3)
-github.com/conformal/btcwire/netaddress.go	 NetAddress.HasService			 100.00% (3/3)
 github.com/conformal/btcwire/msgblock.go	 MsgBlock.AddTransaction		 100.00% (3/3)
+github.com/conformal/btcwire/netaddress.go	 NetAddress.HasService			 100.00% (3/3)
+github.com/conformal/btcwire/msgversion.go	 MsgVersion.HasService			 100.00% (3/3)
 github.com/conformal/btcwire/invvect.go		 InvType.String				 100.00% (3/3)
-github.com/conformal/btcwire/msgblock.go	 MsgBlock.ClearTransactions		 100.00% (2/2)
 github.com/conformal/btcwire/netaddress.go	 NetAddress.SetAddress			 100.00% (2/2)
 github.com/conformal/btcwire/netaddress.go	 NewNetAddressIPPort			 100.00% (2/2)
-github.com/conformal/btcwire/common.go		 RandomUint64				 100.00% (1/1)
+github.com/conformal/btcwire/msgblock.go	 MsgBlock.ClearTransactions		 100.00% (2/2)
+github.com/conformal/btcwire/msggetblocks.go	 MsgGetBlocks.Command			 100.00% (1/1)
+github.com/conformal/btcwire/blockheader.go	 NewBlockHeader				 100.00% (1/1)
+github.com/conformal/btcwire/common.go		 readElement				 100.00% (1/1)
 github.com/conformal/btcwire/common.go		 writeElement				 100.00% (1/1)
+github.com/conformal/btcwire/common.go		 RandomUint64				 100.00% (1/1)
+github.com/conformal/btcwire/error.go		 messageError				 100.00% (1/1)
+github.com/conformal/btcwire/msgaddr.go		 MsgAddr.ClearAddresses			 100.00% (1/1)
+github.com/conformal/btcwire/msgaddr.go		 MsgAddr.Command			 100.00% (1/1)
+github.com/conformal/btcwire/msgaddr.go		 NewMsgAddr				 100.00% (1/1)
+github.com/conformal/btcwire/msgalert.go	 MsgAlert.Command			 100.00% (1/1)
+github.com/conformal/btcwire/msgalert.go	 MsgAlert.MaxPayloadLength		 100.00% (1/1)
+github.com/conformal/btcwire/msgalert.go	 NewMsgAlert				 100.00% (1/1)
+github.com/conformal/btcwire/msgblock.go	 MsgBlock.Deserialize			 100.00% (1/1)
+github.com/conformal/btcwire/msgblock.go	 MsgBlock.Serialize			 100.00% (1/1)
+github.com/conformal/btcwire/msgblock.go	 MsgBlock.Command			 100.00% (1/1)
+github.com/conformal/btcwire/msgblock.go	 MsgBlock.MaxPayloadLength		 100.00% (1/1)
+github.com/conformal/btcwire/msgblock.go	 MsgBlock.BlockSha			 100.00% (1/1)
+github.com/conformal/btcwire/msgblock.go	 NewMsgBlock				 100.00% (1/1)
+github.com/conformal/btcwire/msggetaddr.go	 MsgGetAddr.BtcDecode			 100.00% (1/1)
+github.com/conformal/btcwire/msggetaddr.go	 MsgGetAddr.BtcEncode			 100.00% (1/1)
+github.com/conformal/btcwire/msggetaddr.go	 MsgGetAddr.Command			 100.00% (1/1)
+github.com/conformal/btcwire/msggetaddr.go	 MsgGetAddr.MaxPayloadLength		 100.00% (1/1)
+github.com/conformal/btcwire/msggetaddr.go	 NewMsgGetAddr				 100.00% (1/1)
+github.com/conformal/btcwire/msggetblocks.go	 MsgGetBlocks.MaxPayloadLength		 100.00% (1/1)
+github.com/conformal/btcwire/msggetblocks.go	 NewMsgGetBlocks			 100.00% (1/1)
+github.com/conformal/btcwire/msggetdata.go	 MsgGetData.Command			 100.00% (1/1)
+github.com/conformal/btcwire/msggetdata.go	 MsgGetData.MaxPayloadLength		 100.00% (1/1)
+github.com/conformal/btcwire/msggetdata.go	 NewMsgGetData				 100.00% (1/1)
+github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.Command			 100.00% (1/1)
+github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.MaxPayloadLength		 100.00% (1/1)
+github.com/conformal/btcwire/msggetheaders.go	 NewMsgGetHeaders			 100.00% (1/1)
+github.com/conformal/btcwire/msgheaders.go	 MsgHeaders.Command			 100.00% (1/1)
+github.com/conformal/btcwire/msgheaders.go	 NewMsgHeaders				 100.00% (1/1)
+github.com/conformal/btcwire/msginv.go		 MsgInv.Command				 100.00% (1/1)
+github.com/conformal/btcwire/msginv.go		 MsgInv.MaxPayloadLength		 100.00% (1/1)
+github.com/conformal/btcwire/msginv.go		 NewMsgInv				 100.00% (1/1)
 github.com/conformal/btcwire/msgmempool.go	 MsgMemPool.Command			 100.00% (1/1)
 github.com/conformal/btcwire/msgmempool.go	 MsgMemPool.MaxPayloadLength		 100.00% (1/1)
 github.com/conformal/btcwire/msgmempool.go	 NewMsgMemPool				 100.00% (1/1)
-github.com/conformal/btcwire/msggetaddr.go	 MsgGetAddr.BtcDecode			 100.00% (1/1)
-github.com/conformal/btcwire/msgblock.go	 NewMsgBlock				 100.00% (1/1)
-github.com/conformal/btcwire/msgblock.go	 MsgBlock.BlockSha			 100.00% (1/1)
 github.com/conformal/btcwire/msgnotfound.go	 MsgNotFound.Command			 100.00% (1/1)
 github.com/conformal/btcwire/msgnotfound.go	 MsgNotFound.MaxPayloadLength		 100.00% (1/1)
 github.com/conformal/btcwire/msgnotfound.go	 NewMsgNotFound				 100.00% (1/1)
-github.com/conformal/btcwire/msgblock.go	 MsgBlock.MaxPayloadLength		 100.00% (1/1)
-github.com/conformal/btcwire/msgblock.go	 MsgBlock.Command			 100.00% (1/1)
+github.com/conformal/btcwire/msgheaders.go	 MsgHeaders.MaxPayloadLength		 100.00% (1/1)
 github.com/conformal/btcwire/msgping.go		 MsgPing.Command			 100.00% (1/1)
-github.com/conformal/btcwire/msgheaders.go	 MsgHeaders.Command			 100.00% (1/1)
 github.com/conformal/btcwire/msgping.go		 NewMsgPing				 100.00% (1/1)
-github.com/conformal/btcwire/msgblock.go	 MsgBlock.Serialize			 100.00% (1/1)
-github.com/conformal/btcwire/msgblock.go	 MsgBlock.Deserialize			 100.00% (1/1)
 github.com/conformal/btcwire/msgpong.go		 MsgPong.Command			 100.00% (1/1)
 github.com/conformal/btcwire/msgpong.go		 NewMsgPong				 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 NewOutPoint				 100.00% (1/1)
+github.com/conformal/btcwire/msgtx.go		 TxIn.SerializeSize			 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 NewTxIn				 100.00% (1/1)
+github.com/conformal/btcwire/msgtx.go		 TxOut.SerializeSize			 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 NewTxOut				 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.AddTxIn				 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.AddTxOut				 100.00% (1/1)
-github.com/conformal/btcwire/msgalert.go	 NewMsgAlert				 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.Deserialize			 100.00% (1/1)
-github.com/conformal/btcwire/msgalert.go	 MsgAlert.MaxPayloadLength		 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.Serialize			 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.Command				 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 MsgTx.MaxPayloadLength			 100.00% (1/1)
 github.com/conformal/btcwire/msgtx.go		 NewMsgTx				 100.00% (1/1)
-github.com/conformal/btcwire/common.go		 readElement				 100.00% (1/1)
-github.com/conformal/btcwire/shahash.go		 ShaHash.IsEqual			 100.00% (1/1)
-github.com/conformal/btcwire/msgalert.go	 MsgAlert.Command			 100.00% (1/1)
-github.com/conformal/btcwire/msgaddr.go		 NewMsgAddr				 100.00% (1/1)
-github.com/conformal/btcwire/msgaddr.go		 MsgAddr.Command			 100.00% (1/1)
 github.com/conformal/btcwire/msgverack.go	 MsgVerAck.BtcDecode			 100.00% (1/1)
 github.com/conformal/btcwire/msgverack.go	 MsgVerAck.BtcEncode			 100.00% (1/1)
 github.com/conformal/btcwire/msgverack.go	 MsgVerAck.Command			 100.00% (1/1)
 github.com/conformal/btcwire/msgverack.go	 MsgVerAck.MaxPayloadLength		 100.00% (1/1)
 github.com/conformal/btcwire/msgverack.go	 NewMsgVerAck				 100.00% (1/1)
 github.com/conformal/btcwire/msgversion.go	 MsgVersion.AddService			 100.00% (1/1)
-github.com/conformal/btcwire/msgaddr.go		 MsgAddr.ClearAddresses			 100.00% (1/1)
-github.com/conformal/btcwire/invvect.go		 NewInvVect				 100.00% (1/1)
 github.com/conformal/btcwire/msgversion.go	 MsgVersion.Command			 100.00% (1/1)
 github.com/conformal/btcwire/msgversion.go	 MsgVersion.MaxPayloadLength		 100.00% (1/1)
 github.com/conformal/btcwire/msgversion.go	 NewMsgVersion				 100.00% (1/1)
-github.com/conformal/btcwire/blockheader.go	 NewBlockHeader				 100.00% (1/1)
 github.com/conformal/btcwire/netaddress.go	 NetAddress.AddService			 100.00% (1/1)
-github.com/conformal/btcwire/error.go		 messageError				 100.00% (1/1)
-github.com/conformal/btcwire/msggetdata.go	 NewMsgGetData				 100.00% (1/1)
-github.com/conformal/btcwire/msggetdata.go	 MsgGetData.MaxPayloadLength		 100.00% (1/1)
-github.com/conformal/btcwire/msggetdata.go	 MsgGetData.Command			 100.00% (1/1)
-github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.Command			 100.00% (1/1)
-github.com/conformal/btcwire/msggetheaders.go	 MsgGetHeaders.MaxPayloadLength		 100.00% (1/1)
-github.com/conformal/btcwire/msggetheaders.go	 NewMsgGetHeaders			 100.00% (1/1)
-github.com/conformal/btcwire/msggetblocks.go	 NewMsgGetBlocks			 100.00% (1/1)
-github.com/conformal/btcwire/msggetblocks.go	 MsgGetBlocks.MaxPayloadLength		 100.00% (1/1)
-github.com/conformal/btcwire/msggetblocks.go	 MsgGetBlocks.Command			 100.00% (1/1)
-github.com/conformal/btcwire/msggetaddr.go	 NewMsgGetAddr				 100.00% (1/1)
-github.com/conformal/btcwire/msgheaders.go	 MsgHeaders.MaxPayloadLength		 100.00% (1/1)
-github.com/conformal/btcwire/msgheaders.go	 NewMsgHeaders				 100.00% (1/1)
-github.com/conformal/btcwire/msggetaddr.go	 MsgGetAddr.MaxPayloadLength		 100.00% (1/1)
-github.com/conformal/btcwire/msggetaddr.go	 MsgGetAddr.Command			 100.00% (1/1)
-github.com/conformal/btcwire/msggetaddr.go	 MsgGetAddr.BtcEncode			 100.00% (1/1)
-github.com/conformal/btcwire/msginv.go		 MsgInv.Command				 100.00% (1/1)
-github.com/conformal/btcwire/msginv.go		 MsgInv.MaxPayloadLength		 100.00% (1/1)
-github.com/conformal/btcwire/msginv.go		 NewMsgInv				 100.00% (1/1)
-github.com/conformal/btcwire			 ---------------------------------	 100.00% (955/955)
+github.com/conformal/btcwire/shahash.go		 ShaHash.IsEqual			 100.00% (1/1)
+github.com/conformal/btcwire/invvect.go		 NewInvVect				 100.00% (1/1)
+github.com/conformal/btcwire			 ---------------------------------	 100.00% (970/970)