public void CorrectParse() { var histogramService = new HistogramSorterService(); // Get the directory in which the test files are contained. var pathToHistogramFiles = $"{Directory.GetCurrentDirectory()}/../../../{TestFilesFolder}"; // Parse the files in the test directory. var parseOutput = histogramService.ParseHistograms(pathToHistogramFiles); var testFileNames = Directory .GetFiles(pathToHistogramFiles) .Select(Path.GetFileNameWithoutExtension) .ToList(); var imageIds = parseOutput .Select(histogram => histogram.ImageId) .ToList(); Assert.True(testFileNames.Count == NumberOfHistogramsInTestFolder); Assert.True(testFileNames.Count == parseOutput.Count); foreach (var testFileName in testFileNames) { Assert.Contains(testFileName, imageIds); } foreach (var colorHistogram in parseOutput) { Assert.True(colorHistogram.RedHistogram.Count == 16); Assert.True(colorHistogram.GreenHistogram.Count == 16); Assert.True(colorHistogram.BlueHistogram.Count == 16); } }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var configService = new GlobalConfigService(); var globalConfig = configService.LoadConfig(Configuration); var userSessionsManager = new UserSessionsManager(); var labelsService = new LabelSorterService(); var histogramService = new HistogramSorterService(); var imageLabelsPath = Configuration["FilePaths:ImageLabelsPath"]; var colorHistogramsPath = Configuration["FilePaths:ColorHistogramFiles"]; var imageLabelsWrapper = new LoadedImageLabelsWrapper(labelsService.ParseLabels(imageLabelsPath)); var histogramsWrapper = new LoadedHistogramsWrapper(histogramService.ParseHistograms(colorHistogramsPath)); services.AddSingleton(globalConfig); services.AddSingleton(configService); services.AddSingleton(userSessionsManager); services.AddSingleton(labelsService); services.AddSingleton(histogramService); services.AddSingleton(imageLabelsWrapper); services.AddSingleton(histogramsWrapper); services.AddRazorPages(); }
public void CorrectClosestHistogramTest() { var histogramService = new HistogramSorterService(); var histogram1 = new ColorHistogram( "randomId1", new List <double> { 0.1 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.3 } ); var histogram2 = new ColorHistogram( "randomId2", new List <double> { 0.1 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.2 } ); var histogram3 = new ColorHistogram( "randomId3", new List <double> { 0.1 }, new List <double> { 0.1, 0.1 }, new List <double> { 0.1, 0.2, 0.4 } ); var selectedHistograms = new List <ColorHistogram> { histogram1, histogram2, histogram3 }; var comparisonMap = histogramService.CreateHistogramComparisonMap(selectedHistograms); selectedHistograms.RemoveAt(0); var closestIndex = histogramService.FindTheClosestHistogramIndex( "randomId1", selectedHistograms, comparisonMap ); Assert.True(closestIndex == 0); }
public void CorrectDifferenceTest() { var histogramService = new HistogramSorterService(); var histogram1 = new ColorHistogram( "randomId1", new List <double> { 0.1 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.3 } ); var histogram2 = new ColorHistogram( "randomId2", new List <double> { 0.1 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.3 } ); var difference = histogramService.HistogramDifferenceSum(histogram1, histogram2); Assert.True(difference == 0); var histogram3 = new ColorHistogram( "randomId3", new List <double> { 0.1 }, new List <double> { 0.1, 0.1 }, new List <double> { 0.1, 0.2, 0.2 } ); difference = histogramService.HistogramDifferenceSum(histogram1, histogram3); Assert.True(difference - 2 * Math.Pow(0.1, 2) < 0.001); }
public ImagePresentation( GlobalConfig globalConfig, UserSessionsManager userSessionsManager, LoadedImageLabelsWrapper imageLabelsWrapper, LoadedHistogramsWrapper histogramsWrapper, LabelSorterService labelSorterService, HistogramSorterService histogramSorterService ) { _globalConfig = globalConfig; _userSessionsManager = userSessionsManager; _imageLabelsWrapper = imageLabelsWrapper; _histogramsWrapper = histogramsWrapper; _labelSorterService = labelSorterService; _histogramSorterService = histogramSorterService; }
public void IncorrectArgumentImageSelection() { var histogramService = new HistogramSorterService(); var pathToHistogramFiles = $"{Directory.GetCurrentDirectory()}/../../../{TestFilesFolder}"; var colorHistograms = histogramService.ParseHistograms(pathToHistogramFiles); try { histogramService.SelectRandomImages(NumberOfTestImagesForArgumentExc, colorHistograms); } catch (ArgumentException) { Assert.True(true); } catch (Exception) { Assert.True(false); } }
public void IncorrectRangeTest() { var histogramService = new HistogramSorterService(); var histogram1 = new ColorHistogram( "randomId1", new List <double> { 0.1 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.3 } ); var histogram2 = new ColorHistogram( "randomId2", new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.3 } ); try { histogramService.HistogramDifferenceSum(histogram1, histogram2); } catch (ArgumentException) { Assert.True(true); } catch (Exception) { Assert.True(false); } }
public void CorrectImageSelection() { var histogramService = new HistogramSorterService(); var pathToHistogramFiles = $"{Directory.GetCurrentDirectory()}/../../../{TestFilesFolder}"; var colorHistograms = histogramService.ParseHistograms(pathToHistogramFiles); var presentedImages = histogramService.SelectRandomImages(NumberOfImagesToPresent, colorHistograms); Assert.True(presentedImages.Count == NumberOfImagesToPresent); for (var i = presentedImages.Count - 1; i >= 0; i--) { for (var j = i - 1; j >= 0; j--) { Assert.True( presentedImages[i].ImageId != presentedImages[j].ImageId, $"{presentedImages[i].ImageId} matches {presentedImages[j].ImageId}" ); } presentedImages.RemoveAt(i); } }
public void CorrectSortTest() { var histogramService = new HistogramSorterService(); var histogram1 = new ColorHistogram( "randomId1", new List <double> { 0.1 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.3 } ); var histogram2 = new ColorHistogram( "randomId2", new List <double> { 0.1 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.2 } ); var histogram3 = new ColorHistogram( "randomId3", new List <double> { 0.1 }, new List <double> { 0.1, 0.1 }, new List <double> { 0.1, 0.2, 0.4 } ); var histogram4 = new ColorHistogram( "randomId4", new List <double> { 0.2 }, new List <double> { 0.2, 0.1 }, new List <double> { 0.1, 0.2, 0.3 } ); var selectedHistograms = new List <ColorHistogram> { histogram1, histogram2, histogram3, histogram4 }; var comparisonMap = histogramService.CreateHistogramComparisonMap(selectedHistograms); var sortedHistograms = histogramService.SortSelectedHistograms( 2, 2, comparisonMap, selectedHistograms ); Assert.True(true); }
public void CorrectComparisonMapTest() { var histogramService = new HistogramSorterService(); var histogram1 = new ColorHistogram( "randomId1", new List <double> { 0.1 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.3 } ); var histogram2 = new ColorHistogram( "randomId2", new List <double> { 0.1 }, new List <double> { 0.1, 0.2 }, new List <double> { 0.1, 0.2, 0.2 } ); var histogram3 = new ColorHistogram( "randomId3", new List <double> { 0.1 }, new List <double> { 0.1, 0.1 }, new List <double> { 0.1, 0.2, 0.4 } ); var selectedHistograms = new List <ColorHistogram> { histogram1, histogram2, histogram3 }; var comparisonMap = histogramService.CreateHistogramComparisonMap(selectedHistograms); Assert.True(comparisonMap.Count == 6); Assert.True( comparisonMap[new HistogramComparisonKeys("randomId1", "randomId2")] - Math.Pow(0.1, 2) < 0.001 ); Assert.True( comparisonMap[new HistogramComparisonKeys("randomId2", "randomId1")] - Math.Pow(0.1, 2) < 0.001 ); Assert.True( comparisonMap[new HistogramComparisonKeys("randomId1", "randomId3")] - 2 * Math.Pow(0.1, 2) < 0.001 ); Assert.True( comparisonMap[new HistogramComparisonKeys("randomId3", "randomId1")] - 2 * Math.Pow(0.1, 2) < 0.001 ); Assert.True( comparisonMap[new HistogramComparisonKeys("randomId2", "randomId3")] - (Math.Pow(0.1, 2) + Math.Pow(0.2, 2)) < 0.001 ); Assert.True( comparisonMap[new HistogramComparisonKeys("randomId3", "randomId2")] - (Math.Pow(0.1, 2) + Math.Pow(0.2, 2)) < 0.001 ); }