/** * {@inheritDoc} */ @Override public Statement copy(TestCase newTestCase, int offset) { @SuppressWarnings("unchecked") PrimitiveStatement<T> clone = (PrimitiveStatement<T>) getPrimitiveStatement(newTestCase, retval.getGenericClass()); clone.setValue(value); // clone.assertions = copyAssertions(newTestCase, offset); return clone; }
if (p.getValue().getClass().equals(Character.class)) { char charValue = (char) value.intValue(); p.setValue(charValue); } else if (p.getValue().getClass().equals(Long.class)) { p.setValue(value); } else if (p.getValue().getClass().equals(Integer.class)) { p.setValue(value.intValue()); } else if (p.getValue().getClass().equals(Short.class)) { p.setValue(value.shortValue()); } else if (p.getValue().getClass().equals(Boolean.class)) { p.setValue(value.intValue() > 0); } else if (p.getValue().getClass().equals(Byte.class)) { p.setValue(value.byteValue()); + " / Orig test: " + test.toCode() + ", seed: " + Randomness.getSeed(); if (p.getValue().getClass().equals(Character.class)) p.setValue((char) Integer.parseInt(val.toString())); else p.setValue(val.toString()); } else if (val instanceof Double) { Double value = (Double) val; p.setValue(value); else if (p.getValue().getClass().equals(Float.class)) p.setValue(value.floatValue()); else logger.warn("New value is of an unsupported type: " + val);
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override public void createPlainInitStmt(CaptureLog log, int logRecNo) { // NOTE: PLAIN INIT: has always one non-null param // TODO: use primitives final int oid = log.objectIds.get(logRecNo); if (this.oidToVarRefMap.containsKey(oid)) { // TODO this might happen because of Integer.valueOf(), for example. . Is this approach ok? return; } final String type = log.getTypeName(oid); final Object value = log.params.get(logRecNo)[0]; final VariableReference varRef; if (value instanceof Class) { // final PrimitiveStatement cps = ClassPrimitiveStatement.getPrimitiveStatement(testCase, getClassForName(type)); final PrimitiveStatement cps = new ClassPrimitiveStatement(testCase, getClassForName(type)); cps.setValue(value); varRef = testCase.addStatement(cps); } else { final PrimitiveStatement primitiveValue = PrimitiveStatement.getPrimitiveStatement(testCase, getClassForName(type)); primitiveValue.setValue(value); varRef = testCase.addStatement(primitiveValue); } this.oidToVarRefMap.put(oid, varRef); }
/** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public boolean doSearch(TestChromosome test, int statement, LocalSearchObjective<TestChromosome> objective) { PrimitiveStatement<Boolean> p = (PrimitiveStatement<Boolean>) test.getTestCase().getStatement(statement); ExecutionResult oldResult = test.getLastExecutionResult(); oldValue = p.getValue(); p.setValue(!oldValue); if (!objective.hasImproved(test)) { // Restore original p.setValue(oldValue); test.setLastExecutionResult(oldResult); test.setChanged(false); return false; } else { return true; } }
p.setValue((char) value.intValue()); else if (p.getValue().getClass().equals(Long.class)) p.setValue(value); else if (p.getValue().getClass().equals(Integer.class)) p.setValue(value.intValue()); else if (p.getValue().getClass().equals(Short.class)) p.setValue(value.shortValue()); else if (p.getValue().getClass().equals(Boolean.class)) p.setValue(value.intValue() > 0); else if (p.getValue().getClass().equals(Byte.class)) p.setValue(value.byteValue() > 0); else logger.warn("New value is of an unsupported type: " + p.getValue().getClass() + val); + " / Orig test: " + test.toCode() + ", seed: " + Randomness.getSeed(); if (p.getValue().getClass().equals(Character.class)) p.setValue((char) Integer.parseInt(val.toString())); else p.setValue(val.toString()); } else if (val instanceof Double) { Double value = (Double) val; p.setValue(value); else if (p.getValue().getClass().equals(Float.class)) p.setValue(value.floatValue()); else logger.warn("New value is of an unsupported type: " + val);
@SuppressWarnings({ "rawtypes", "unchecked", "unused" }) private void createConcretePrimitives(TestCase test) { // Execute test to collect concrete values TestCaseExecutor executor = TestCaseExecutor.getInstance(); ConcreteValueObserver observer = new ConcreteValueObserver(); executor.addObserver(observer); executor.execute(test); executor.removeObserver(observer); // Now replace references to concrete values with new primitive statements Map<Integer, Object> concreteValues = observer.getConcreteValues(); List<Integer> positions = new ArrayList<Integer>(concreteValues.keySet()); Collections.sort(positions, Collections.reverseOrder()); for (Integer position : positions) { Object value = concreteValues.get(position); Statement statement = test.getStatement(position); PrimitiveStatement primitive = PrimitiveStatement.getPrimitiveStatement(test, new GenericClass( value.getClass())); primitive.setValue(value); VariableReference replacement = test.addStatement(primitive, position); test.replace(statement.getReturnValue(), replacement); } }