List of usage examples for org.springframework.util ReflectionUtils setField
public static void setField(Field field, @Nullable Object target, @Nullable Object value)
From source file:com.ciphertool.zodiacengine.service.GeneticCipherSolutionServiceTest.java
@Test public void testEnd_ExceptionThrown() throws IOException { GeneticCipherSolutionService geneticCipherSolutionService = new GeneticCipherSolutionService(); geneticCipherSolutionService.toggleRunning(); GeneticAlgorithm geneticAlgorithm = mock(GeneticAlgorithm.class); when(geneticAlgorithm.getPopulation()).thenThrow(new IllegalStateException()); geneticCipherSolutionService.setGeneticAlgorithm(geneticAlgorithm); Runtime runtimeMock = mock(Runtime.class); Field runtimeField = ReflectionUtils.findField(GeneticCipherSolutionService.class, "runtime"); ReflectionUtils.makeAccessible(runtimeField); ReflectionUtils.setField(runtimeField, geneticCipherSolutionService, runtimeMock); String[] commandsAfter = { "command1", "command2" }; geneticCipherSolutionService.setCommandsAfter(commandsAfter); SolutionDao solutionDaoMock = mock(SolutionDao.class); geneticCipherSolutionService.setSolutionDao(solutionDaoMock); Field logField = ReflectionUtils.findField(GeneticCipherSolutionService.class, "log"); Logger mockLogger = mock(Logger.class); ReflectionUtils.makeAccessible(logField); ReflectionUtils.setField(logField, geneticCipherSolutionService, mockLogger); doNothing().when(mockLogger).error(anyString(), any(Throwable.class)); assertTrue(geneticCipherSolutionService.isRunning()); geneticCipherSolutionService.end();//from ww w . j av a2 s . c om assertFalse(geneticCipherSolutionService.isRunning()); verifyZeroInteractions(solutionDaoMock); verify(mockLogger, times(1)).error(anyString(), any(Throwable.class)); /* * These commands should still get called even though an exception was * caught */ verify(runtimeMock, times(1)).exec(eq("command1")); verify(runtimeMock, times(1)).exec(eq("command2")); verifyNoMoreInteractions(runtimeMock); }
From source file:com.ciphertool.genetics.algorithms.MultigenerationalGeneticAlgorithmTest.java
@Test public void testSelect() { MultigenerationalGeneticAlgorithm multigenerationalGeneticAlgorithm = new MultigenerationalGeneticAlgorithm(); int populationSize = 100; double survivalRate = 0.9; Population population = new Population(); multigenerationalGeneticAlgorithm.setPopulation(population); GeneticAlgorithmStrategy strategyToSet = new GeneticAlgorithmStrategy(); strategyToSet.setPopulationSize(populationSize); strategyToSet.setSurvivalRate(survivalRate); Field strategyField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "strategy"); ReflectionUtils.makeAccessible(strategyField); ReflectionUtils.setField(strategyField, multigenerationalGeneticAlgorithm, strategyToSet); SelectionAlgorithm selectionAlgorithmMock = mock(SelectionAlgorithm.class); Field selectionAlgorithmField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "selectionAlgorithm"); ReflectionUtils.makeAccessible(selectionAlgorithmField); ReflectionUtils.setField(selectionAlgorithmField, multigenerationalGeneticAlgorithm, selectionAlgorithmMock);/*www .j a v a 2s . c om*/ multigenerationalGeneticAlgorithm.select(); verify(selectionAlgorithmMock, times(1)).select(same(population), eq(populationSize), eq(survivalRate)); verifyNoMoreInteractions(selectionAlgorithmMock); }
From source file:com.ciphertool.zodiacengine.service.GeneticCipherSolutionServiceTest.java
@Test public void testTearDown() throws IOException { GeneticCipherSolutionService geneticCipherSolutionService = new GeneticCipherSolutionService(); Runtime runtimeMock = mock(Runtime.class); Field runtimeField = ReflectionUtils.findField(GeneticCipherSolutionService.class, "runtime"); ReflectionUtils.makeAccessible(runtimeField); ReflectionUtils.setField(runtimeField, geneticCipherSolutionService, runtimeMock); String[] commandsAfter = { "command1", "command2" }; geneticCipherSolutionService.setCommandsAfter(commandsAfter); geneticCipherSolutionService.tearDown(); verify(runtimeMock, times(1)).exec(eq("command1")); verify(runtimeMock, times(1)).exec(eq("command2")); verifyNoMoreInteractions(runtimeMock); }
From source file:com.ciphertool.genetics.algorithms.MultigenerationalGeneticAlgorithmTest.java
@SuppressWarnings("unchecked") @Test/*from ww w .ja v a 2 s. com*/ public void testCrossover() { MultigenerationalGeneticAlgorithm multigenerationalGeneticAlgorithm = new MultigenerationalGeneticAlgorithm(); Population population = new Population(); FitnessEvaluator fitnessEvaluatorMock = mock(FitnessEvaluator.class); when(fitnessEvaluatorMock.evaluate(any(Chromosome.class))).thenReturn(DEFAULT_FITNESS_VALUE); population.setFitnessEvaluator(fitnessEvaluatorMock); Selector selectorMock = mock(Selector.class); population.setSelector(selectorMock); when(selectorMock.getNextIndex(anyListOf(Chromosome.class), any(Double.class))).thenReturn(0, 1, 2, 3, 4); int initialPopulationSize = 50; for (int i = 0; i < initialPopulationSize; i++) { population.addIndividual(new MockKeylessChromosome()); } multigenerationalGeneticAlgorithm.setPopulation(population); CrossoverAlgorithm crossoverAlgorithmMock = mock(CrossoverAlgorithm.class); Field crossoverAlgorithmField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "crossoverAlgorithm"); ReflectionUtils.makeAccessible(crossoverAlgorithmField); ReflectionUtils.setField(crossoverAlgorithmField, multigenerationalGeneticAlgorithm, crossoverAlgorithmMock); Chromosome chromosomeToReturn = new MockKeylessChromosome(); when(crossoverAlgorithmMock.crossover(any(Chromosome.class), any(Chromosome.class))) .thenReturn(Arrays.asList(chromosomeToReturn)); GeneticAlgorithmStrategy strategy = new GeneticAlgorithmStrategy(); strategy.setCrossoverRate(0.1); Field strategyField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "strategy"); ReflectionUtils.makeAccessible(strategyField); ReflectionUtils.setField(strategyField, multigenerationalGeneticAlgorithm, strategy); Field ineligibleForReproductionField = ReflectionUtils.findField(Population.class, "ineligibleForReproduction"); ReflectionUtils.makeAccessible(ineligibleForReproductionField); List<Chromosome> ineligibleForReproductionFromObject = (List<Chromosome>) ReflectionUtils .getField(ineligibleForReproductionField, population); assertEquals(0, ineligibleForReproductionFromObject.size()); int childrenProduced = multigenerationalGeneticAlgorithm.crossover(initialPopulationSize); ineligibleForReproductionFromObject = (List<Chromosome>) ReflectionUtils .getField(ineligibleForReproductionField, population); assertEquals(5, childrenProduced); /* * The population size should be reduced by the number of parents used * during crossover. */ assertEquals(40, population.size()); // There should be 10 ineligible parents, along with the 5 children assertEquals(15, ineligibleForReproductionFromObject.size()); verify(selectorMock, times(10)).getNextIndex(anyListOf(Chromosome.class), any(Double.class)); verify(crossoverAlgorithmMock, times(5)).crossover(any(Chromosome.class), any(Chromosome.class)); }
From source file:com.ciphertool.genetics.algorithms.MultigenerationalGeneticAlgorithmTest.java
@SuppressWarnings("unchecked") @Test/*from w ww. j ava 2 s . co m*/ public void testCrossover_SmallPopulation() { MultigenerationalGeneticAlgorithm multigenerationalGeneticAlgorithm = new MultigenerationalGeneticAlgorithm(); Population population = new Population(); Chromosome chromosome = new MockKeylessChromosome(); population.addIndividual(chromosome); multigenerationalGeneticAlgorithm.setPopulation(population); CrossoverAlgorithm crossoverAlgorithmMock = mock(CrossoverAlgorithm.class); Field crossoverAlgorithmField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "crossoverAlgorithm"); ReflectionUtils.makeAccessible(crossoverAlgorithmField); ReflectionUtils.setField(crossoverAlgorithmField, multigenerationalGeneticAlgorithm, crossoverAlgorithmMock); Field ineligibleForReproductionField = ReflectionUtils.findField(Population.class, "ineligibleForReproduction"); ReflectionUtils.makeAccessible(ineligibleForReproductionField); List<Chromosome> ineligibleForReproductionFromObject = (List<Chromosome>) ReflectionUtils .getField(ineligibleForReproductionField, population); assertEquals(0, ineligibleForReproductionFromObject.size()); int childrenProduced = multigenerationalGeneticAlgorithm.crossover(10); ineligibleForReproductionFromObject = (List<Chromosome>) ReflectionUtils .getField(ineligibleForReproductionField, population); assertEquals(1, population.size()); assertEquals(0, childrenProduced); assertEquals(0, ineligibleForReproductionFromObject.size()); verifyZeroInteractions(crossoverAlgorithmMock); }
From source file:com.ciphertool.genetics.algorithms.MultigenerationalGeneticAlgorithmTest.java
@Test public void testDeterminePairsToCrossover() { int initialPopulationSize = 100; Population populationMock = mock(Population.class); when(populationMock.size()).thenReturn(initialPopulationSize); MultigenerationalGeneticAlgorithm multigenerationalGeneticAlgorithm = new MultigenerationalGeneticAlgorithm(); multigenerationalGeneticAlgorithm.setPopulation(populationMock); GeneticAlgorithmStrategy strategyToSet = new GeneticAlgorithmStrategy(); double crossoverRate = 0.5; strategyToSet.setCrossoverRate(crossoverRate); Field strategyField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "strategy"); ReflectionUtils.makeAccessible(strategyField); ReflectionUtils.setField(strategyField, multigenerationalGeneticAlgorithm, strategyToSet); long pairsToCrossover = multigenerationalGeneticAlgorithm.determinePairsToCrossover(initialPopulationSize); assertEquals(50, pairsToCrossover);// w ww . j a va 2 s.co m }
From source file:com.ciphertool.genetics.algorithms.MultigenerationalGeneticAlgorithmTest.java
@Test public void testDeterminePairsToCrossover_SmallPopulation() { int initialPopulationSize = 100; int actualPopulationSize = 50; Population populationMock = mock(Population.class); when(populationMock.size()).thenReturn(actualPopulationSize); MultigenerationalGeneticAlgorithm multigenerationalGeneticAlgorithm = new MultigenerationalGeneticAlgorithm(); multigenerationalGeneticAlgorithm.setPopulation(populationMock); GeneticAlgorithmStrategy strategyToSet = new GeneticAlgorithmStrategy(); double crossoverRate = 0.5; strategyToSet.setCrossoverRate(crossoverRate); Field strategyField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "strategy"); ReflectionUtils.makeAccessible(strategyField); ReflectionUtils.setField(strategyField, multigenerationalGeneticAlgorithm, strategyToSet); long pairsToCrossover = multigenerationalGeneticAlgorithm.determinePairsToCrossover(initialPopulationSize); assertEquals(25, pairsToCrossover);//from w ww. j a va 2s. c o m }
From source file:com.ciphertool.genetics.algorithms.MultigenerationalGeneticAlgorithmTest.java
@Test public void testMutate() { int initialPopulationSize = 100; int index = 0; Population populationMock = mock(Population.class); when(populationMock.selectIndex()).thenReturn(index); when(populationMock.getIndividuals()).thenReturn(Arrays.asList(mock(Chromosome.class))); when(populationMock.size()).thenReturn(initialPopulationSize); MultigenerationalGeneticAlgorithm multigenerationalGeneticAlgorithm = new MultigenerationalGeneticAlgorithm(); multigenerationalGeneticAlgorithm.setPopulation(populationMock); GeneticAlgorithmStrategy strategyToSet = new GeneticAlgorithmStrategy(); double mutationRate = 0.5; strategyToSet.setMutationRate(mutationRate); Field strategyField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "strategy"); ReflectionUtils.makeAccessible(strategyField); ReflectionUtils.setField(strategyField, multigenerationalGeneticAlgorithm, strategyToSet); MutationAlgorithm mutationAlgorithmMock = mock(MutationAlgorithm.class); Field mutationAlgorithmField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "mutationAlgorithm"); ReflectionUtils.makeAccessible(mutationAlgorithmField); ReflectionUtils.setField(mutationAlgorithmField, multigenerationalGeneticAlgorithm, mutationAlgorithmMock); multigenerationalGeneticAlgorithm.mutate(initialPopulationSize); verify(populationMock, times(50)).selectIndex(); verify(populationMock, times(50)).getIndividuals(); verify(populationMock, times(50)).makeIneligibleForReproduction(index); verify(populationMock, times(50)).addIndividualAsIneligible(any(Chromosome.class)); verify(populationMock, times(1)).size(); verifyNoMoreInteractions(populationMock); verify(mutationAlgorithmMock, times(50)).mutateChromosome(any(Chromosome.class)); verifyNoMoreInteractions(mutationAlgorithmMock); }
From source file:com.ciphertool.genetics.algorithms.MultigenerationalGeneticAlgorithmTest.java
@Test public void testMutate_SmallPopulation() { int initialPopulationSize = 100; int actualPopulationSize = 25; int index = 0; Population populationMock = mock(Population.class); when(populationMock.selectIndex()).thenReturn(index); when(populationMock.getIndividuals()).thenReturn(Arrays.asList(mock(Chromosome.class))); when(populationMock.size()).thenReturn(actualPopulationSize); MultigenerationalGeneticAlgorithm multigenerationalGeneticAlgorithm = new MultigenerationalGeneticAlgorithm(); multigenerationalGeneticAlgorithm.setPopulation(populationMock); GeneticAlgorithmStrategy strategyToSet = new GeneticAlgorithmStrategy(); double mutationRate = 0.5; strategyToSet.setMutationRate(mutationRate); Field strategyField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "strategy"); ReflectionUtils.makeAccessible(strategyField); ReflectionUtils.setField(strategyField, multigenerationalGeneticAlgorithm, strategyToSet); MutationAlgorithm mutationAlgorithmMock = mock(MutationAlgorithm.class); Field mutationAlgorithmField = ReflectionUtils.findField(MultigenerationalGeneticAlgorithm.class, "mutationAlgorithm"); ReflectionUtils.makeAccessible(mutationAlgorithmField); ReflectionUtils.setField(mutationAlgorithmField, multigenerationalGeneticAlgorithm, mutationAlgorithmMock); multigenerationalGeneticAlgorithm.mutate(initialPopulationSize); verify(populationMock, times(actualPopulationSize)).selectIndex(); verify(populationMock, times(actualPopulationSize)).getIndividuals(); verify(populationMock, times(actualPopulationSize)).makeIneligibleForReproduction(index); verify(populationMock, times(actualPopulationSize)).addIndividualAsIneligible(any(Chromosome.class)); verify(populationMock, times(1)).size(); verifyNoMoreInteractions(populationMock); verify(mutationAlgorithmMock, times(actualPopulationSize)).mutateChromosome(any(Chromosome.class)); verifyNoMoreInteractions(mutationAlgorithmMock); }
From source file:com.glaf.core.util.ReflectUtils.java
public static void setFieldValue(Object target, String fieldName, Object fieldValue) { try {/*from ww w . j ava2 s . c om*/ Field field = ReflectionUtils.findField(target.getClass(), fieldName); if (field != null && !Modifier.isPublic(field.getModifiers())) { field.setAccessible(true); } ReflectionUtils.setField(field, target, fieldValue); } catch (Exception ex) { try { BeanUtils.setProperty(target, fieldName, fieldValue); } catch (Exception e) { } } }