public void GetMetricRepresentationReturnsValue(bool sortAscending) { var sorter = new SortByValue <TestInstance>(sortAscending); var result = new ContinuousResult(100, TimeSpan.Zero); Assert.Equal( 100, sorter.GetMetricRepresentation(result)); }
public void AscendingSorterReturnsGenomeWithLowerAverageValueFirst(bool sortAscending) { var sorter = new SortByValue <TestInstance>(sortAscending); var betterGenome = new ImmutableGenome(new Genome(1)); var worseGenome = new ImmutableGenome(new Genome(2)); var betterResults = this.CreateStats(betterGenome, this._instances, i => sortAscending ? i : 10); var worseResults = this.CreateStats(worseGenome, this._instances, i => sortAscending ? 10 : i); var combinedImmutableResults = new[] { betterResults.ToImmutable(), worseResults.ToImmutable() }; var sortedGenomes = sorter.Sort(combinedImmutableResults).ToList(); sortedGenomes.Count.ShouldBe(2); Assert.Equal(betterGenome, sortedGenomes.First().Genome); Assert.Equal(worseGenome, sortedGenomes.Last().Genome); }
public void AscendingSorterHandlesDifferentNumberOfRunsPerGenomeCorrectly(bool sortAscending) { var sorter = new SortByValue <TestInstance>(sortAscending); var worseGenome = new ImmutableGenome(new Genome(1)); var betterGenome = new ImmutableGenome(new Genome(2)); // worse, because less valid results. var worseStats = this.CreateStats(worseGenome, this._instances, i => sortAscending ? 1 : 2, 1); var betterStats = this.CreateStats(betterGenome, this._instances, i => sortAscending ? 2 : 1); var allStats = new[] { worseStats.ToImmutable(), betterStats.ToImmutable() }; var sortedGenomes = sorter.Sort(allStats).ToList(); sortedGenomes.Count.ShouldBe(2); Assert.Equal(betterGenome, sortedGenomes.First().Genome); Assert.Equal(worseGenome, sortedGenomes.Last().Genome); }
public void SortByValueHandlesInvalidResultsCorrectly(bool sortAscending) { var sorter = new SortByValue <TestInstance>(sortAscending); var worstGenome = new ImmutableGenome(new Genome(1)); var middleWorseGenome = new ImmutableGenome(new Genome(2)); var middleBetterGenome = new ImmutableGenome(new Genome(3)); var bestGenome = new ImmutableGenome(new Genome(4)); var stats4 = this.CreateStats(worstGenome, this._instances, i => double.NaN, 4); var stats3 = this.CreateStats(middleWorseGenome, this._instances, i => double.NaN, 2); var stats2 = this.CreateStats(middleBetterGenome, this._instances, i => double.PositiveInfinity, 2); var stats1 = this.CreateStats(bestGenome, this._instances, i => 10, 4); var runResults = new[] { stats1.ToImmutable(), stats2.ToImmutable(), stats3.ToImmutable(), stats4.ToImmutable() }; var sortedGenomes = sorter.Sort(runResults).ToList(); sortedGenomes.Count.ShouldBe(4); Assert.Equal(bestGenome, sortedGenomes.First().Genome); Assert.Equal(middleBetterGenome, sortedGenomes.Skip(1).First().Genome); Assert.Equal(middleWorseGenome, sortedGenomes.Skip(2).First().Genome); Assert.Equal(worstGenome, sortedGenomes.Last().Genome); }