Example #1
0
        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());
        }
Example #2
0
        public void GetBlockIDTest()
        {
            var blk = new Block()
            {
                Header = BlockHeaderTests.GetSampleBlockHeader()
            };

            string actual   = blk.GetBlockID();
            string expected = BlockHeaderTests.GetSampleBlockHex();

            Assert.Equal(expected, actual);
        }
Example #3
0
        public void GetBlockHashTest()
        {
            var blk = new Block()
            {
                Header = BlockHeaderTests.GetSampleBlockHeader()
            };

            byte[] actual   = blk.GetBlockHash();
            byte[] expected = BlockHeaderTests.GetSampleBlockHash();

            Assert.Equal(expected, actual);
        }
Example #4
0
        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
            });
        }