/** * Overrides the test case at position <code>testIndex</code> with the * individual. It returns <code>-1</code> if the new fitness has improved, * <code>1</code> if the fitness has worsened or <code>0</code> if the * fitness has not changed. */ @Override public int hasChanged(TestChromosome testCase) { testCase.setChanged(true); suite.setTestChromosome(testIndex, testCase); LocalSearchBudget.getInstance().countFitnessEvaluation(); for (TestSuiteFitnessFunction fitnessFunction : fitnessFunctions) fitnessFunction.getFitness(suite); double newFitness = suite.getFitness(); if (isFitnessBetter(newFitness, lastFitnessSum)) { logger.info("Local search improved fitness from " + lastFitnessSum + " to " + newFitness); updateLastFitness(); updateLastCoverage(); return -1; } else if (isFitnessWorse(newFitness, lastFitnessSum)) { logger.info("Local search worsened fitness from " + lastFitnessSum + " to " + newFitness); suite.setFitnessValues(lastFitness); suite.setCoverageValues(lastCoverage); return 1; } else { logger.info("Local search did not change fitness of " + lastFitnessSum); updateLastCoverage(); return 0; } }