示例#1
0
        private static Task Start(CancellationToken cancelToken)
        {
            return(Task.Run(async() =>
            {
                var targetSize = new Size(1920, 1080);
                var gridSize = new Size(128, 80);
                Image targetImage = null;

                var assembly = Assembly.GetExecutingAssembly();
                var resourceName = "Mosaic.Console.TestImage.png";
                using (Stream stream = assembly.GetManifestResourceStream(resourceName))
                {
                    targetImage = Image.FromStream(stream);
                }

                var mosaic = new Mosaic.Core.Mosaic(targetImage, targetSize, gridSize);
                var imageSource = new ImgurImageSource(new ImgurQuery("title: dog"), cancelToken);
                var featureExtractor = new BasicImageFeatureExtractor();
                var resultImage = await mosaic.Build(imageSource, featureExtractor, cancelToken);

                var path = Path.Combine(Path.GetTempPath(), "mosaic", $"Mosaic-{DateTime.Now.ToString("yyyyMMdd-HHmmss")}.png");
                ImageUtils.SaveImageToFile(resultImage, path);
                System.Console.WriteLine($"Writing completed Mosaic to file: {path}");

                _completedEvent.Set();
            }));
        }
示例#2
0
        public async void GetContent_given_valid_url_of_invalid_imageformat_returns_null()
        {
            var mock = new Mock <ImgurRatelimiter>(null);

            mock.Setup(m => m.IsRequestAllowed()).Returns(true);
            mock.Setup(m => m.LimitsHaveBeenLoaded()).Returns(true);

            var imageId = "example";
            var output  = new ImgurImage {
                Height = 5, Width = 10, Title = "test", Link = $"i.imgur.com/{imageId}", Type = "image/png"
            };

            var handler = StubHttpClient.GetHandler();

            handler.AddResponse(new Uri($"https://api.imgur.com/3/image/{imageId}"), HttpStatusCode.OK, new ApiHelper <ImgurImage> {
                Data = output
            });

            var source = new ImgurImageSource(StubHttpClient.Create(handler), mock.Object);

            source.Settings = CreateSettings();
            var result = await source.GetContent(imageId);

            Assert.Null(result);
            mock.Verify(i => i.LimitsHaveBeenLoaded(), Times.Once);
            mock.Verify(i => i.IsRequestAllowed(), Times.Once);
        }
示例#3
0
        public async void GetContent_when_ratelimiter_refuses_request_returns_empty_album()
        {
            var mock = new Mock <ImgurRatelimiter>(null);

            mock.Setup(m => m.IsRequestAllowed()).Returns(false);
            mock.Setup(m => m.LimitsHaveBeenLoaded()).Returns(true);

            var source = new ImgurImageSource(null, mock.Object);
            var result = await source.GetContent("example");

            Assert.Null(result);
            mock.Verify(i => i.LimitsHaveBeenLoaded(), Times.Once);
            mock.Verify(i => i.IsRequestAllowed(), Times.Once);
        }
示例#4
0
        public async void GetContent_given_nonexistant_url_returns_null()
        {
            var mock = new Mock <ImgurRatelimiter>(null);

            mock.Setup(m => m.IsRequestAllowed()).Returns(true);
            mock.Setup(m => m.LimitsHaveBeenLoaded()).Returns(true);

            var imageId = "example";
            var handler = StubHttpClient.GetHandler();

            handler.AddResponse(new Uri($"https://api.imgur.com/3/image/{imageId}"), HttpStatusCode.NotFound, new object());

            var source = new ImgurImageSource(StubHttpClient.Create(handler), mock.Object);
            var result = await source.GetContent(imageId);

            Assert.Null(result);
            mock.Verify(i => i.LimitsHaveBeenLoaded(), Times.Once);
            mock.Verify(i => i.IsRequestAllowed(), Times.Once);
        }