private ComicDownloadRequest CreateRequest(int count) { var sourceProvider = new ResourceComicProvider(); var saver = new NullSaver(); var reqs = Enumerable.Range(0, count) .Select(x => new DownloadItemRequest(new ComicPage { TargetUrl = "-no-" })) .ToArray(); var req = new ComicDownloadRequest(saver, null, null, reqs, sourceProvider); return(req); }
public async Task CallBatchEmit_AllTaskMustBeRun() { var provider = new ResourceComicProvider(); var reqs = new DownloadItemRequest[] { new DownloadItemRequest(null), new DownloadItemRequest(null), new DownloadItemRequest(null), new DownloadItemRequest(null), }; var req = new ComicDownloadRequest(new NullSaver(), null, null, new DownloadItemRequest[0], provider); var downloader = new ComicDownloader(new RecyclableMemoryStreamManager()); await ComicDownloaderExtensions.BatchEmitAsync(downloader, req); }
public void GivenValue_PropertyValueMustEqualGiven() { var saver = new NullComicSaver(); var req = new DownloadItemRequest[0]; var prov = new NullSourceProvider(); var eq = new ComicDownloadRequest(saver, null, null, req, prov); var chp = new ComicChapter(); var page = new ComicPage(); var ctx = new DownloadListenerContext(eq, chp, page, default); Assert.AreEqual(eq, ctx.Request); Assert.AreEqual(chp, ctx.Chapter); Assert.AreEqual(page, ctx.Page); Assert.AreEqual(CancellationToken.None, ctx.Token); }
public async Task GivenNullOrOutOfRangeValue_MustThrowException() { var req = new ComicDownloadRequest(new NullSaver(), null, null, new DownloadItemRequest[0], new NullSourceProvider()); var downloader = new ComicDownloader(new RecyclableMemoryStreamManager()); await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => ComicDownloaderExtensions.EmitAsync(null, req)); await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => ComicDownloaderExtensions.EmitAsync(downloader, null)); await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => ComicDownloaderExtensions.BatchEmitAsync(null, req)); await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => ComicDownloaderExtensions.BatchEmitAsync(downloader, null)); await Assert.ThrowsExceptionAsync <ArgumentOutOfRangeException>(() => ComicDownloaderExtensions.BatchEmitAsync(downloader, req, 0)); await Assert.ThrowsExceptionAsync <ArgumentOutOfRangeException>(() => ComicDownloaderExtensions.BatchEmitAsync(downloader, req, -1)); await Assert.ThrowsExceptionAsync <ArgumentOutOfRangeException>(() => ComicDownloaderExtensions.BatchEmitAsync(downloader, req, -5)); }
public void GivenValueInit_PropertyMustEqualGiven() { var saver = new NullSaver(); var entity = new ComicEntity(); var detail = new ComicDetail(); var reqs = new List <DownloadItemRequest>(); var provider = new NullSourceProvider(); var req = new ComicDownloadRequest(saver, entity, detail, reqs, provider); Assert.AreEqual(saver, req.Saver); Assert.AreEqual(entity, req.Entity); Assert.AreEqual(detail, req.Detail); Assert.AreEqual(reqs, req.DownloadRequests); Assert.AreEqual(provider, req.Provider); var listener = new NullDownloadListener(); req.Listener = listener; Assert.AreEqual(listener, req.Listener); }
public async Task EmitTaskWithListener_ThrowException_TheMethodWasCalled() { var sourceProvider = new ExceptionComicProvider(); var saver = new NullSaver(); var reqs = Enumerable.Range(0, 1) .Select(x => new DownloadItemRequest(new ComicPage { TargetUrl = "-no-" })) .ToArray(); var mgr = new RecyclableMemoryStreamManager(); var req = new ComicDownloadRequest(saver, null, null, reqs, sourceProvider); var downloader = new ComicDownloader(mgr); var listener = new NullDownloadListener(); req.Listener = listener; var res = downloader.EmitTasks(req); await res[0](); Assert.IsTrue(listener.IsFetchPageExceptionAsync); }
public DownloadLink(IComicSourceProviderHost host, IComicDownloader downloader, ComicDownloadRequest request) { Host = host; Downloader = downloader; Request = request; }