@Override public int getNumParameters() { if (isStatic()) return 0; else return 1; }
/** {@inheritDoc} */ @Override public Set<VariableReference> getVariableReferences() { Set<VariableReference> references = new LinkedHashSet<VariableReference>(); references.add(retval); if (!isStatic()) { references.add(source); if (source.getAdditionalVariableReference() != null) references.add(source.getAdditionalVariableReference()); } return references; }
private boolean fieldNeedsDownCast(FieldStatement fieldStatement, VariableReference var, Class<?> abstractClass) { if(!fieldStatement.isStatic() && fieldStatement.getSource().equals(var)) { if(!fieldStatement.getField().getDeclaringClass().isAssignableFrom(abstractClass)) { // Need downcast for real return true; } } return false; }
/** * Try to replace source of field with all possible choices * * @param test * @param statement * @param objective */ /* (non-Javadoc) * @see org.evosuite.testcase.AbstractStatement#mutate(org.evosuite.testcase.TestCase, org.evosuite.testcase.TestFactory) */ @Override public boolean mutate(TestCase test, TestFactory factory) { if (Randomness.nextDouble() >= Properties.P_CHANGE_PARAMETER) return false; if (!isStatic()) { VariableReference source = getSource(); List<VariableReference> objects = test.getObjects(source.getType(), getPosition()); objects.remove(source); if (!objects.isEmpty()) { setSource(Randomness.choice(objects)); return true; } } return false; }
/** * Try to replace source of field with all possible choices * * @param test * @param statement */ private boolean replaceFieldSource(TestChromosome test, FieldStatement statement) { if (!statement.isStatic()) { VariableReference source = statement.getSource(); List<VariableReference> objects = test.getTestCase().getObjects(source.getType(), statement.getPosition()); objects.remove(source); if (!objects.isEmpty()) { statement.setSource(Randomness.choice(objects)); test.setChanged(true); } } return false; }
/** * Try to replace source of field with all possible choices * * @param test * @param statement * @param objective */ private boolean doSearch(TestChromosome test, FieldStatement statement, LocalSearchObjective<TestChromosome> objective) { if (!statement.isStatic()) { VariableReference source = statement.getSource(); List<VariableReference> objects = test.getTestCase().getObjects(source.getType(), statement.getPosition()); objects.remove(source); for (VariableReference replacement : objects) { statement.setSource(replacement); if (objective.hasImproved(test)) { return true; } } statement.setSource(source); } return false; } }