public void MineBlock()
        {
            TransactionPool transactionPool = new TransactionPool();
            MinerProcessor  processor       = new MinerProcessor(transactionPool);
            Block           genesis         = FactoryHelper.CreateGenesisBlock();

            Block block = processor.MineBlock(genesis);

            Assert.IsNotNull(block);
            Assert.AreEqual(1ul, block.Number);
            Assert.AreEqual(0, block.Transactions.Count);
            Assert.AreEqual(genesis.Hash, block.ParentHash);
        }
        public void MineBlockWithTransaction()
        {
            TransactionPool transactionPool = new TransactionPool();
            Transaction     transaction     = FactoryHelper.CreateTransaction(1000);

            transactionPool.AddTransaction(transaction);

            MinerProcessor processor = new MinerProcessor(transactionPool);
            Block          genesis   = FactoryHelper.CreateGenesisBlock();

            Block block = processor.MineBlock(genesis);

            Assert.IsNotNull(block);
            Assert.AreEqual(1ul, block.Number);
            Assert.AreEqual(1, block.Transactions.Count);
            Assert.AreSame(transaction, block.Transactions[0]);
            Assert.AreEqual(genesis.Hash, block.ParentHash);
        }
        public void MineBlockWithTwoTransactions()
        {
            TransactionPool transactionPool = new TransactionPool();
            Transaction     transaction1    = FactoryHelper.CreateTransaction(1000);
            Transaction     transaction2    = FactoryHelper.CreateTransaction(2000);

            transactionPool.AddTransaction(transaction1);
            transactionPool.AddTransaction(transaction2);

            MinerProcessor processor = new MinerProcessor(transactionPool);
            Block          genesis   = FactoryHelper.CreateGenesisBlock();

            Block block = processor.MineBlock(genesis);

            Assert.IsNotNull(block);
            Assert.AreEqual(1ul, block.Number);
            Assert.AreEqual(2, block.Transactions.Count);
            Assert.IsTrue(block.Transactions.Contains(transaction1));
            Assert.IsTrue(block.Transactions.Contains(transaction2));
        }