public void Setup() { writtenData = new List <Tuple <long, byte[]> >(); Sha1Hash hash; using (var sha1 = SHA1.Create()) hash = new Sha1Hash(sha1.ComputeHash(Enumerable.Repeat((byte)0, 50).ToArray())); var metainfo = new Metainfo("test", Sha1Hash.Empty, new[] { new ContainedFile("File1.txt", 100), }, new[] { new Piece(0, 50, hash), new Piece(50, 50, hash), }, new IEnumerable <Uri> [0], new byte[0]); var baseHandler = new Mock <IBlockDataHandler>(); baseHandler.Setup(x => x.Metainfo) .Returns(metainfo); baseHandler.Setup(x => x.WriteBlockData(It.IsAny <long>(), It.IsAny <byte[]>())) .Callback <long, byte[]>((offset, data) => writtenData.Add(Tuple.Create(offset, data))); pieceChecker = new PieceCheckerHandler(baseHandler.Object); }
internal TorrentDownload Add(Metainfo metainfo, ITracker tracker, IFileHandler fileHandler) { var dataHandler = new PieceCheckerHandler(new BlockDataHandler(fileHandler, metainfo)); var bitTorrentApplicationProtocol = new BitTorrentApplicationProtocol <BitTorrentPeerInitiator.IContext>(LocalPeerId, metainfo, peerInitiator, m => new QueueingMessageHandler(mainLoop, m), moduleManager, dataHandler); var downloadManager = new TorrentDownloadManager(LocalPeerId, mainLoop, bitTorrentApplicationProtocol, tracker, metainfo); var download = new TorrentDownload(downloadManager); downloads.Add(metainfo.InfoHash, download); return(download); }