package ngenes2.individual.generator; import java.util.Iterator; import java.util.NoSuchElementException; import ngenes2.fitness.Fitness; import ngenes2.individual.IndividualFactory; import org.junit.Before; import org.junit.Test; import static org.mockito.Mockito.*; public class GeneratorTest { private IndividualFactory indFac; private Fitness fitFunc; private ChromosomeGenerator chromeGen; private Generator gen; @Before public void setup() { indFac = mock(IndividualFactory.class); fitFunc = mock(Fitness.class); chromeGen = mock(ChromosomeGenerator.class); gen = new Generator(indFac, fitFunc, chromeGen); } @Test public void testGenerate() { gen.generate(); verify(indFac, times(1)).makeIndividual(eq(fitFunc), anyList()); verify(chromeGen, times(1)).generate(); } @Test public void testGenerate_int() { final int n = 12; Iterator it = gen.generate(n); while (it.hasNext()) { it.next(); } verify(indFac, times(n)).makeIndividual(eq(fitFunc), anyList()); verify(chromeGen, times(n)).generate(); } @Test(expected = NoSuchElementException.class) public void testTryingToGetMoreIndividualsThanCreated() { final int n = 12; Iterator it = gen.generate(n); while (it.hasNext()) { it.next(); } it.next(); } @Test(expected = UnsupportedOperationException.class) public void testRemovingIndividualsFromIterator() { final int n = 12; Iterator it = gen.generate(n); it.remove(); } }