Пример #1
0
        public void ReceiveAllPieces_PieceUnhashed()
        {
            peers[0].BitField.SetAll(true);
            peers[0].IsChoking = false;
            rig.Manager.Bitfield.SetAll(true).SetFalse(1);

            RequestMessage        p;
            List <RequestMessage> requests = new List <RequestMessage> ();
            Piece piece = null;

            while ((p = picker.PickPiece(peers[0], peers)) != null)
            {
                piece = manager.PieceDataReceived(peers[0], new PieceMessage(p.PieceIndex, p.StartOffset, p.RequestLength)) ?? piece;
                if (requests.Any(t => t.PieceIndex == p.PieceIndex && t.RequestLength == p.RequestLength && t.StartOffset == p.StartOffset))
                {
                    Assert.Fail("We should not pick the same piece twice");
                }
                requests.Add(p);
            }
            Assert.IsNull(picker.PickPiece(peers[0], peers), "#1");
            Assert.IsTrue(manager.UnhashedPieces[1], "#2");
            Assert.IsTrue(piece.AllBlocksReceived, "#3");
        }