MakeSolvedTestBlock() публичный статический Метод

public static MakeSolvedTestBlock ( NetworkParameters @params, Block prev ) : Block
@params NetworkParameters
prev Block
Результат Block
Пример #1
0
        public void TestRunInvBlock()
        {
            var b1 = TestUtils.CreateFakeBlock(_unitTestParams, _blockStore).Block;

            _blockChain.Add(b1);

            var prev = TestUtils.MakeSolvedTestBlock(_unitTestParams, _blockStore);
            var b2   = TestUtils.MakeSolvedTestBlock(_unitTestParams, prev);
            var b3   = TestUtils.MakeSolvedTestBlock(_unitTestParams, b2);

            _control.Setup(x => x.WriteMessage(It.IsAny <Message>())).Verifiable();

            var inv  = new InventoryMessage(_unitTestParams);
            var item = new InventoryItem(InventoryItem.ItemType.Block, b3.Hash);

            inv.AddItem(item);

            _control.Setup(x => x.ReadMessage()).Returns(() => b2, () => inv, ReadFinalMessage).Verifiable();

            var message = CaptureGetDataMessage();

            RunPeerAndVerify();

            var items = message.Value.Items;

            Assert.AreEqual(1, items.Count);
            Assert.AreEqual(b3.Hash, items[0].Hash);
            Assert.AreEqual(InventoryItem.ItemType.Block, items[0].Type);
        }
Пример #2
0
        public void TestGetBlock()
        {
            var b1 = TestUtils.CreateFakeBlock(_unitTestParams, _blockStore).Block;

            _blockChain.Add(b1);

            var prev = TestUtils.MakeSolvedTestBlock(_unitTestParams, _blockStore);
            var b2   = TestUtils.MakeSolvedTestBlock(_unitTestParams, prev);

            var message = CaptureGetDataMessage();

            _control.Setup(x => x.ReadMessage()).Returns(() => b2, ReadFinalMessage).Verifiable();

            _control.Setup(x => x.Shutdown()).Verifiable();

            var resultFuture = _peer.BeginGetBlock(b2.Hash, null, null);

            _peer.Run();

            Assert.AreEqual(b2.Hash, _peer.EndGetBlock(resultFuture).Hash);

            _control.Verify();

            var expectedLocator = new List <Sha256Hash>();

            expectedLocator.Add(b1.Hash);
            expectedLocator.Add(_unitTestParams.GenesisBlock.Hash);

            var items = message.Value.Items;

            Assert.AreEqual(1, items.Count);
            Assert.AreEqual(b2.Hash, items[0].Hash);
            Assert.AreEqual(InventoryItem.ItemType.Block, items[0].Type);
        }
Пример #3
0
        public void TestRunInvTickle()
        {
            var b1 = TestUtils.CreateFakeBlock(_unitTestParams, _blockStore).Block;

            _blockChain.Add(b1);

            var prev  = TestUtils.MakeSolvedTestBlock(_unitTestParams, _blockStore);
            var block = TestUtils.MakeSolvedTestBlock(_unitTestParams, prev);

            var inv  = new InventoryMessage(_unitTestParams);
            var item = new InventoryItem(InventoryItem.ItemType.Block, block.Hash);

            inv.AddItem(item);

            _control.Setup(x => x.ReadMessage()).Returns(() => block, () => inv, ReadFinalMessage).Verifiable();

            var message = CaptureGetBlocksMessage();

            RunPeerAndVerify();

            var expectedLocator = new List <Sha256Hash>();

            expectedLocator.Add(b1.Hash);
            expectedLocator.Add(_unitTestParams.GenesisBlock.Hash);

            Assert.AreEqual(message.Value.Locator, expectedLocator);
            Assert.AreEqual(message.Value.StopHash, block.Hash);
        }
Пример #4
0
        public void TestRunNewBlock()
        {
            _control.Setup(x => x.ReadMessage()).Returns(() => TestUtils.MakeSolvedTestBlock(_unitTestParams, _blockStore), ReadFinalMessage).Verifiable();
            _control.Setup(x => x.VersionMessage).Returns(new VersionMessage(_unitTestParams, 100)).Verifiable();
            var eventFired = false;

            _peer.BlocksDownloaded +=
                (sender, e) =>
            {
                Assert.AreEqual(e.BlocksLeft, 99);
                eventFired = true;
            };
            RunPeerAndVerify();
            Assert.IsTrue(eventFired);
        }