@Before public void setup() throws NoSuchFieldException, IllegalAccessException { initMocks(this); // injecting Population mock Field inj = GAPipeline.class.getDeclaredField("population"); inj.setAccessible(true); inj.set(gaPipeline, population); inj.setAccessible(false); gaPipeline.setChoosePairsStrategy(choosePairsStrategy); gaPipeline.setCrossoverStrategy(crossoverStrategy); gaPipeline.setMutationStrategy(mutationStrategy); gaPipeline.setSelectionStrategy(selectionStrategy); // We add 2 elements to makePairs() return, // so crossoverStrategy.crossover() should be invoked 2 times Set<Couple> crossoverStub = new HashSet<Couple>(); crossoverStub.add(Couple.ofCouple(1, 2)); crossoverStub.add(Couple.ofCouple(1, 3)); // Init strategies when(choosePairsStrategy.choosePairs(Matchers.<Population>any())).thenReturn(crossoverStub); when(crossoverStrategy.crossover(Matchers.<net.wintermuse.util.Pair>any())) .thenReturn(mock(Pair.class)); when(mutationStrategy.mutate(any())).thenReturn(mock(Object.class)); when(selectionStrategy.select(Matchers.<Population>any())).thenReturn(mock(Population.class)); }
@Test public void process_AllStrategiesFired() { gaPipeline.process(); verify(choosePairsStrategy, times(1)).choosePairs(Matchers.<Population>any()); verify(crossoverStrategy, times(2)).crossover(Matchers.<net.wintermuse.util.Pair>any()); verify(selectionStrategy, times(1)).select(Matchers.<Population>any()); }
@Test(expected = NullPointerException.class) public void setPopulation_CollectionNull_ThrowNPE() { Population testPopulation = null; gaPipeline.setPopulation(testPopulation); }
@Test(expected = NullPointerException.class) public void setChoosePairsStrategy_Null_ThrowNPE() { gaPipeline.setChoosePairsStrategy(null); }