package ngenes2.builder;
import ngenes2.evolver.Evolver;
import ngenes2.evolver.monitor.NopMonitor;
import ngenes2.evolver.stop.FitnessTarget;
import ngenes2.evolver.stop.MaxGeneration;
import ngenes2.examples.MaxOnes;
import ngenes2.individual.LinearIndividual;
import ngenes2.individual.generator.bool.RandomBooleanGenerator;
import ngenes2.ops.crossover.MidBreakCrossover;
import ngenes2.ops.mutator.PointMutation;
import ngenes2.ops.mutator.genes.bool.BooleanFlipper;
import ngenes2.ops.selector.KTournament;
import ngenes2.population.Population;
import ngenes2.util.Properties;
import org.junit.Test;
import static org.junit.Assert.*;
public class BasicDIBuilderTest {
@Test
public void testInstanciation() {
Properties prop = new Properties()
.put("tournament_size",3)
.put("chromosome_size", 200)
.put("population_size", 100)
.put("fitness_target", 10e-9)
.put("max_generation", 500);
BasicDIBuilder builder = new BasicDIBuilder()
.with(prop)
.with(LinearIndividual.Factory.class)
.with(new MaxOnes.Fitness())
.with(RandomBooleanGenerator.class)
.with(KTournament.class)
.with(BooleanFlipper.class)
.with(PointMutation.class)
.with(MidBreakCrossover.class)
.with(NopMonitor.class)
.with( new FitnessTarget(prop).or( new MaxGeneration(prop) ) );
Evolver ev = builder.evolver();
Population pop = builder.population();
assertTrue( ev != null );
assertTrue( pop != null );
}
}