public void MinimumFitness_GetResultValue_WithScaling()
        {
            MinimumFitness metric = new MinimumFitness();

            metric.Initialize(new MockGeneticAlgorithm {
                FitnessScalingStrategy = new MockFitnessScalingStrategy()
            });

            MockPopulation population = new MockPopulation();

            population.Entities.Add(new MockEntity {
                ScaledFitnessValue = 11
            });
            population.Entities.Add(new MockEntity {
                ScaledFitnessValue = 10
            });
            population.Entities.Add(new MockEntity {
                ScaledFitnessValue = 15
            });
            population.Entities.Add(new MockEntity {
                ScaledFitnessValue = 13
            });
            object result = metric.GetResultValue(population);

            Assert.Equal((double)10, result);
        }
        public void MinimumFitness_GetResultValue_NoScaling()
        {
            MinimumFitness metric = new MinimumFitness();

            metric.Initialize(new MockGeneticAlgorithm());

            MockPopulation population         = new MockPopulation();
            PrivateObject  populationAccessor = new PrivateObject(population, new PrivateType(typeof(Population)));

            populationAccessor.SetField("rawMin", (double)2);
            object result = metric.GetResultValue(population);

            Assert.Equal((double)2, result);
        }
        public void MinimumFitness_GetResultValue_NullPopulation()
        {
            MockGeneticAlgorithm algorithm = new MockGeneticAlgorithm
            {
                SelectionOperator = new MockSelectionOperator(),
                FitnessEvaluator  = new MockFitnessEvaluator(),
                GeneticEntitySeed = new MockEntity(),
                PopulationSeed    = new SimplePopulation(),
            };

            algorithm.Metrics.Add(new MinimumFitness());

            MinimumFitness target = new MinimumFitness();

            target.Initialize(algorithm);
            Assert.Throws <ArgumentNullException>(() => target.GetResultValue(null));
        }