package ngenes2.population;
import java.util.ArrayList;
import java.util.List;
import ngenes2.individual.Individual;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
/**
*
* @author falcone
*/
public class BasicPopulationTest {
private List<Individual> initList;
private Individual ind1;
private Individual ind2;
private Population pop;
@Before
public void setUp() {
ind1 = mock(Individual.class);
when(ind1.fitness()).thenReturn(1.0);
ind2 = mock(Individual.class);
when(ind2.fitness()).thenReturn(0.5);
initList = new ArrayList<Individual>(2);
initList.add(ind1);
initList.add(ind2);
pop = new BasicPopulation(initList);
}
@Test
public void testSize() {
assertEquals(initList.size(), pop.size());
}
@Test
public void testGet() {
assertSame(ind1, pop.get(0));
assertSame(ind2, pop.get(1));
}
@Test
public void testNextGeneration() {
pop.nextGeneration();
assertEquals(0, pop.size());
}
@Test
public void testAddToNextGeneration() {
final int n = 5;
for (int i = 0; i < n; i++) {
pop.addToNextGeneration(mock(Individual.class));
}
pop.nextGeneration();
assertEquals(5, pop.size());
}
@Test
public void testBest() {
assertSame(ind2, pop.stats().best());
}
@Test
public void testWorst() {
assertSame(ind1, pop.stats().worst());
}
}