Пример #1
0
        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);
        }
Пример #2
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);
 }
Пример #3
0
        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);
        }
Пример #4
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));
        }
Пример #5
0
        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);
        }
Пример #6
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);
        }
Пример #7
0
 public DownloadLink(IComicSourceProviderHost host, IComicDownloader downloader, ComicDownloadRequest request)
 {
     Host       = host;
     Downloader = downloader;
     Request    = request;
 }