Beispiel #1
0
        public void GetMetricRepresentationReturnsValue(bool sortAscending)
        {
            var sorter = new SortByValue <TestInstance>(sortAscending);

            var result = new ContinuousResult(100, TimeSpan.Zero);

            Assert.Equal(
                100,
                sorter.GetMetricRepresentation(result));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }