예제 #1
0
        public void ConnectedBranchToBlockChain()
        {
            BlockBranch branch1 = new BlockBranch();
            BlockBranch branch2 = new BlockBranch();

            Block genesis = new Block(0, null);
            Block block1  = new Block(1, genesis.Hash);
            Block block2  = new Block(2, block1.Hash);
            Block block3  = new Block(3, block2.Hash);

            branch1.TryToAddFirst(genesis);
            branch1.TryToAddLast(block1);
            branch2.TryToAddLast(block2);
            branch2.TryToAddLast(block3);

            branch2.TryToConnect(branch1);

            BlockChain chain = branch2.ToBlockChain(2);

            Assert.IsNotNull(chain);
            Assert.AreEqual(2, chain.BestBlockNumber);
            Assert.AreEqual(genesis, chain.GetBlock(0));
            Assert.AreEqual(block1, chain.GetBlock(1));
            Assert.AreEqual(block2, chain.GetBlock(2));
        }
예제 #2
0
        public void TryToConnectEmptyBranches()
        {
            BlockBranch branch = new BlockBranch();

            Assert.IsFalse(branch.IsConnected());
            Assert.IsFalse(branch.TryToConnect(branch));
            Assert.IsFalse(branch.IsConnected());
        }
예제 #3
0
        public void TryToConnectDisconenctedBranches()
        {
            BlockBranch branch1 = new BlockBranch();
            BlockBranch branch2 = new BlockBranch();

            branch1.TryToAddFirst(new Block(40, new Hash()));
            branch2.TryToAddFirst(new Block(42, new Hash()));

            Assert.IsFalse(branch1.IsConnected());
            Assert.IsFalse(branch2.IsConnected());
            Assert.IsFalse(branch1.TryToConnect(branch2));
            Assert.IsFalse(branch1.IsConnected());
        }
예제 #4
0
        public void ConnectedBranchHasGenesis()
        {
            BlockBranch branch1 = new BlockBranch();
            BlockBranch branch2 = new BlockBranch();

            Block genesis = new Block(0, null);
            Block block   = new Block(1, genesis.Hash);

            branch1.TryToAddFirst(genesis);
            branch2.TryToAddFirst(block);

            Assert.IsTrue(branch2.TryToConnect(branch1));
            Assert.IsTrue(branch2.IsConnected());
            Assert.IsTrue(branch2.HasGenesis());
        }