package ngenes2.breeder; import java.util.ArrayList; import java.util.List; import ngenes2.individual.Individual; import ngenes2.ops.crossover.Crossover; import ngenes2.ops.mutator.Mutator; import ngenes2.population.Population; import org.junit.Test; import static org.mockito.Mockito.*; public class ClassicalBreederTest { @Test public void testBreed() { final Individual ind = mock(Individual.class); final List<Individual> lst = new ArrayList(2); lst.add(ind); lst.add(ind); final Crossover co = mock(Crossover.class); when(co.mate(any(Individual.class), any(Individual.class))).thenReturn(lst); final Mutator mut = mock(Mutator.class); when(mut.mutate(any(Individual.class))).thenReturn(ind); final Breeder breeder = new ClassicalBreeder(co, mut); final Population pop = mock(Population.class); breeder.breed(pop, lst); verify(co, times(1)).mate(any(Individual.class), any(Individual.class)); verify(mut, times(2)).mutate(any(Individual.class)); verify(pop, times(2)).addToNextGeneration(any(Individual.class)); } @Test(expected = IllegalArgumentException.class) public void testNotEnoughParents() { final Individual ind = mock(Individual.class); final Crossover co = mock(Crossover.class); when( co.childrenNumber() ).thenReturn(2); final Breeder breeder = new ClassicalBreeder(co,null); breeder.breed(null, new ArrayList()); } }