public void SerializeTest() { var blk = new Block() { Header = BlockHeaderTests.GetSampleBlockHeader(), TransactionList = new ITransaction[] { new MockSerializableTx(new byte[] { 1, 2, 3 }), new MockSerializableTx(new byte[] { 10, 20, 30 }), new MockSerializableTx(new byte[] { 255, 255 }) } }; var stream = new FastStream(90); blk.Serialize(stream); byte[] expected = new byte[80 + 1 + (3 + 3 + 2)]; Buffer.BlockCopy(BlockHeaderTests.GetSampleBlockHeaderBytes(), 0, expected, 0, Constants.BlockHeaderSize); expected[80] = 3; // Tx count expected[81] = 1; expected[82] = 2; expected[83] = 3; expected[84] = 10; expected[85] = 20; expected[86] = 30; expected[87] = 255; expected[88] = 255; Assert.Equal(expected, stream.ToByteArray()); Assert.Equal(expected, blk.Serialize()); }
public static IEnumerable <object[]> GetDeserFailCases() { byte[] hdba = BlockHeaderTests.GetSampleBlockHeaderBytes(); yield return(new object[] { new byte[Constants.BlockHeaderSize - 1], Err.EndOfStream }); yield return(new object[] { Helper.ConcatBytes(Constants.BlockHeaderSize + 5, hdba, new byte[] { 0xfe, 0x00, 0x00, 0x00, 0x80 }), "Number of transactions is too big." }); yield return(new object[] { Helper.ConcatBytes(Constants.BlockHeaderSize + 1, hdba, new byte[] { 1 }), Err.EndOfStream }); }