Example #1
0
        public void BlockchainCreator_Create_Should_Return_Valid_New_Block()
        {
            var bc        = new BlockchainCreator();
            var headBlock = new Block()
            {
                BlockHash         = "BLOCK_TEST",
                BlockHashPrevious = "BLOCK_TEST2",
                Length            = 10,
                Messages          = new List <EncryptedMessage>(),
                Nonce             = 321,
                Timestamp         = 1000
            };
            var messages = new List <EncryptedMessage>();

            for (int i = 0; i < 5; i++)
            {
                messages.Add(MessageHelper.GetTestEncryptedMessage("t" + i, "c" + i));
            }

            var newBlock = bc.Create(headBlock, messages, (d) => 876);

            Assert.NotNull(newBlock.BlockHash);
            Assert.True(newBlock.Length == 11);
            Assert.True(newBlock.Timestamp > headBlock.Timestamp);
            Assert.True(newBlock.Messages.Count() == 5);
            Assert.True(newBlock.Nonce == 876);
        }
        public void BlockchainValidator_Validate_Should_Return_False_When_Previous_Is_Diffrent_Than_Expected()
        {
            var bv = new BlockchainValidator();
            var bc = new BlockchainCreator();

            var blockPrevious = new Block()
            {
                BlockHash         = "BLOCK_1",
                BlockHashPrevious = "BLOCK_P_1",
                Length            = 20,
                Messages          = new List <EncryptedMessage>(),
                Nonce             = 123,
                Timestamp         = 9000
            };
            var messages = new List <EncryptedMessage>();

            for (int i = 0; i < 5; i++)
            {
                messages.Add(MessageHelper.GetTestEncryptedMessage("t" + i, "c" + i));
            }

            var newBlock = bc.Create(blockPrevious, messages, (d) => 876);

            newBlock.BlockHashPrevious = "BLOCK_2";

            var result = bv.Validate(newBlock, blockPrevious, (d, n) => n == 876);

            Assert.False(result);
        }