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(); })); }
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); }
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); }
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); }