public static void WhenArtSourceAlwaysFailsNoObjectsAreReturned() { MockArtSource alwaysFailArtSource = new MockArtSource(new Art.Object[] { }); Art art = new Art(new IArtSource[] { alwaysFailArtSource }); IEnumerable <Art.Object> objects = art.GetRandomObjects(1); Assert.Empty(objects); }
public static void SingleObjectIsReturnedWhenItsAvailable() { MockArtSource singleObjectSource = new MockArtSource(new Art.Object[] { new Art.Object() }); Art art = new Art(new IArtSource[] { singleObjectSource }); IEnumerable <Art.Object> objects = art.GetRandomObjects(1); Assert.Single(objects); Assert.NotNull(objects.First()); }
public static void WhenArtSourceSometimesFailsTheRequestedNumberOfObjectsIsReturns() { Art.Object[] sourceObjects = new Art.Object[] { null, new Art.Object(), null, new Art.Object(), null, new Art.Object() }; MockArtSource sometimesFailSource = new MockArtSource(sourceObjects); Art art = new Art(new IArtSource[] { sometimesFailSource }); IEnumerable <Art.Object> objects = art.GetRandomObjects(1); Assert.Single(objects); Assert.NotNull(objects.First()); }
static void CreateAppraisals(PostToTwitterMode postToTwitterMode, int numberOfAppraisals) { Console.WriteLine("Getting collection listing"); Art art = new Art(new IArtSource[] { new HarvardArtMuseum(), new MetropolitanMuseumOfArt() }); IEnumerable <Art.Object> responseObjects = art.GetRandomObjects(numberOfAppraisals); Console.WriteLine("Found " + responseObjects.Count() + " results"); int objectCounter = 0; foreach (Art.Object responseObject in responseObjects) { Console.WriteLine("-----------------------------------------------------------------------"); string imageUrl = responseObject.imageURL; Console.WriteLine("image url: " + imageUrl); string fullListingURL = responseObject.listingURL; Console.WriteLine("Listing page: " + fullListingURL); Bitmap originalImage = Web.DownloadImage(imageUrl); if (originalImage != null) { Bitmap resizedImage = ImageTransforms.ResizeToWithinAnalysisLimits(originalImage); if (Directory.Exists("images")) { string originalDestinationFilePath = @"images/sourceImage" + objectCounter + ".jpg"; originalImage.Save(originalDestinationFilePath); string resizedDestinationFilePath = @"images/resizedImage" + objectCounter + ".jpg"; resizedImage.Save(resizedDestinationFilePath); } ComputerVisionService.AnalysisBlob analysisBlob = ComputerVisionService.GetAnalysisBlob(resizedImage); string tagString = ""; foreach (string tag in analysisBlob.generalAnalysisResult.Description.Tags) { tagString += tag + ", "; } Console.WriteLine("Tags: " + tagString); string accentColor = ColorTable.GetClosestColorName(analysisBlob.generalAnalysisResult.Color.AccentColor); Console.WriteLine("Foreground: " + analysisBlob.generalAnalysisResult.Color.DominantColorForeground + " Background: " + analysisBlob.generalAnalysisResult.Color.DominantColorBackground + " Accent: " + accentColor); if (analysisBlob.generalAnalysisResult.Categories != null) { string categoryString = ""; foreach (Category category in analysisBlob.generalAnalysisResult.Categories) { categoryString += category.Name + ", "; } Console.WriteLine("Categories: " + categoryString); } Appraisal appraisal = CreateAppraisal(originalImage, analysisBlob); string tweetableText = GetTweetableText(appraisal.comment, responseObject.listingURL, responseObject.artSourceHashTag); if (Directory.Exists("images")) { string destinationFilePath = @"images/finalImage" + objectCounter + ".jpg"; appraisal.image.Save(destinationFilePath); using (StreamWriter file = File.CreateText(@"images/comment" + objectCounter + ".txt")) { file.WriteLine(tweetableText); } } if (postToTwitterMode == PostToTwitterMode.Yes) { TweetAppraisal(appraisal.image, tweetableText); } } objectCounter++; } }