示例#1
0
        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;
        }
示例#2
0
 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]();
 }
示例#3
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);
        }
示例#4
0
        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);
        }
示例#5
0
 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);
 }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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));
        }
示例#9
0
        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);
        }
示例#10
0
        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);
        }