private async Task DownloadHandler(Xamarin.Forms.Button item) { ComicChapterList comicInformationChapter = comicDetailStructure.comicChapterList.Where(r => r.chapterLink == item.CommandParameter.ToString()).FirstOrDefault(); comicImagesStructure = await _parser.GetComicChapterImages(comicInformationChapter.chapterLink); if (comicImagesStructure.comicChapterImageLink.Count > 0) { ComicDownloader downloader = new ComicDownloader(); bool isDownloadFinished = await downloader.FilesDownloader(comicImagesStructure.comicChapterImageLink, this.Title, comicImagesStructure.comicChapterNumber.ToString(), CommonInternalData.DownloadType.RCO, item); item.Text = "Download"; item.IsEnabled = true; if (isDownloadFinished) { await DisplayAlert("Downloaded", CurrentData.comic_response, "ok"); } else { await DisplayAlert("Failed", CurrentData.comic_response, "ok"); } } else { await DisplayAlert("Hello", "Chapter Not Released Yet.", "ok"); } return; }
public async Task EmitTask_MustReturnValue() { var mgr = new RecyclableMemoryStreamManager(); var req = CreateRequest(1); var downloader = new ComicDownloader(mgr); var res = downloader.EmitTasks(req); await res[0](); }
public void GivenAnyRequest_Emit_MustReturnAllTasks(int count) { var mgr = new RecyclableMemoryStreamManager(); var req = CreateRequest(count); var downloader = new ComicDownloader(mgr); var tasks = downloader.EmitTasks(req); Assert.AreEqual(count, tasks.Length); }
public void GivenAnyRequest_CancelIt_MustNothingReturn() { var mgr = new RecyclableMemoryStreamManager(); var req = CreateRequest(10); var tks = new CancellationTokenSource(); tks.Cancel(); var downloader = new ComicDownloader(mgr); var res = downloader.EmitTasks(req, tks.Token); Assert.AreEqual(0, res.Length); }
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 async Task EmitTaskWithListener_NotNeedToSave_TheMethodWasCalled() { var mgr = new RecyclableMemoryStreamManager(); var req = CreateRequest(1); var listener = new NullDownloadListener(); req.Listener = listener; var saver = (NullSaver)req.Saver; saver.IsNeedToSave = false; var downloader = new ComicDownloader(mgr); var res = downloader.EmitTasks(req); await res[0](); Assert.IsTrue(listener.IsNotNeedToSaveAsync); }
public async Task EmitTaskWithListener_ListenerMethodWasCalled() { var mgr = new RecyclableMemoryStreamManager(); var req = CreateRequest(1); var listener = new NullDownloadListener(); req.Listener = listener; var downloader = new ComicDownloader(mgr); var res = downloader.EmitTasks(req); await res[0](); Assert.IsTrue(listener.IsReadyFetchAsync); Assert.IsTrue(listener.IsBeginFetchPageAsync); Assert.IsTrue(listener.IsReadySaveAsync); Assert.IsTrue(listener.IsEndFetchPageAsync); Assert.IsTrue(listener.IsComplatedSaveAsync); }
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 async Task EmitTaskWithListener_Cancel_CancelListenerWasCalled() { var mgr = new RecyclableMemoryStreamManager(); var req = CreateRequest(1); var listener = new NullDownloadListener(); req.Listener = listener; var downloader = new ComicDownloader(mgr); var tks = new CancellationTokenSource(); var res = downloader.EmitTasks(req, tks.Token); tks.Cancel(); try { await res[0](); } catch (Exception) { } Assert.IsTrue(listener.IsCanceledAsync); }
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); }