/**
* Copyright (C) 2010-2017 Gordon Fraser, Andrea Arcuri and EvoSuite
* contributors
*
* This file is part of EvoSuite.
*
* EvoSuite is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3.0 of the License, or
* (at your option) any later version.
*
* EvoSuite is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with EvoSuite. If not, see <http://www.gnu.org/licenses/>.
*/
package org.evosuite.eclipse.properties;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.PropertyPage;
import org.evosuite.Properties;
public class EvoSuitePropertyPage extends PropertyPage {
// private Combo criterionCombo;
private Table criteriaList;
private Button assertionButton;
private Button minimizeTestsButton;
private Button minimizeValuesButton;
// private Button reportButton;
// private Button plotButton;
private Button sandboxButton;
private Button scaffoldingButton;
private Button deterministicButton;
private Button errorButton;
private Button contractsButton;
private Button dseButton;
private Button lsButton;
private Text testSuffix;
// private Button evosuiteRunnerButton;
private Spinner time;
// private Spinner seed;
private Spinner time2;
public static QualifiedName CRITERIA_PROP_KEY = new QualifiedName("EvoSuite",
"Coverage criteria");
public static QualifiedName ASSERTION_PROP_KEY = new QualifiedName("EvoSuite",
"Assertions");
public static QualifiedName MINIMIZE_TESTS_PROP_KEY = new QualifiedName("EvoSuite",
"Minimize tests");
public static QualifiedName MINIMIZE_VALUES_PROP_KEY = new QualifiedName("EvoSuite",
"Minimize values");
public static QualifiedName TIME_PROP_KEY = new QualifiedName("EvoSuite",
"TestGenTime");
public static QualifiedName GLOBAL_TIME_PROP_KEY = new QualifiedName("EvoSuite",
"GlobalGenTime");
public static QualifiedName PLOT_PROP_KEY = new QualifiedName("EvoSuite", "PlotData");
// public static QualifiedName REPORT_PROP_KEY = new QualifiedName("EvoSuite",
// "ShowReport");
public static QualifiedName SANDBOX_PROP_KEY = new QualifiedName("EvoSuite",
"Sandbox");
public static QualifiedName SCAFFOLDING_PROP_KEY = new QualifiedName("EvoSuite",
"Use scaffolding to hide runtime instrumentation");
public static QualifiedName DETERMINISTIC_PROP_KEY = new QualifiedName("EvoSuite",
"Transform nondeterministic calls");
public static QualifiedName ERROR_BRANCHES_PROP_KEY = new QualifiedName("EvoSuite",
"Instrument potential error branches");
public static QualifiedName CONTRACTS_PROP_KEY = new QualifiedName("EvoSuite",
"Check generic object contracts");
public static QualifiedName DSE_PROP_KEY = new QualifiedName("EvoSuite",
"Use GA+DSE hybrid search");
public static QualifiedName LS_PROP_KEY = new QualifiedName("EvoSuite",
"Use memetic algorithm");
public static QualifiedName SEED_PROP_KEY = new QualifiedName("EvoSuite",
"Use user-provided seed");
public static QualifiedName TEST_SUFFIX_PROP_KEY = new QualifiedName("EvoSuite",
"Suffix to use for generated tests");
// public static QualifiedName RUNNER_PROP_KEY = new QualifiedName("EvoSuite",
// "Use EvoSuite JUnit runner in generated test suites");
/**
*
*/
public EvoSuitePropertyPage() {
super();
}
@Override
protected Control createContents(Composite parent) {
Composite myComposite = new Composite(parent, SWT.NONE);
GridLayout mylayout = new GridLayout(2, false);
mylayout.marginHeight = 10;
mylayout.marginWidth = 10;
myComposite.setLayout(mylayout);
Label criterionlabel = new Label(myComposite, SWT.NONE);
criterionlabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
criterionlabel.setText("Coverage criteria");
// criterionCombo = new Combo(myComposite, SWT.DROP_DOWN | SWT.READ_ONLY);
// criterionCombo.add("Branch coverage");
// criterionCombo.add("DefUse coverage");
// criterionCombo.add("Weak mutation testing");
// criterionCombo.add("Strong mutation testing");
// String criterion = getCriterion();
// if (criterion.equals("defuse"))
// criterionCombo.select(1);
// else if (criterion.equals("weakmutation"))
// criterionCombo.select(2);
// else if (criterion.equals("strongmutation"))
// criterionCombo.select(3);
// else
// criterionCombo.select(0);
// criterionCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
criteriaList = new Table(myComposite, SWT.MULTI | SWT.CHECK | SWT.FULL_SELECTION | SWT.HIDE_SELECTION | SWT.NO_SCROLL | SWT.BORDER);
List<String> criteriaSelected = Arrays.asList(getCriteria());
for(String criterion : new String[]{ "Line",
"Branch",
"Exception",
"WeakMutation",
"Output",
"Input",
"Method",
"MethodNoException",
"CBranch"}) {
TableItem item = new TableItem (criteriaList, 0);
item.setText (criterion);
if(criteriaSelected.contains(criterion))
item.setChecked(true);
else
item.setChecked(false);
}
// criterionList.add("Methods");
// criterionList.add("Methods invoked directly");
// criterionList.add("Methods without exception");
// criterionList.add("Lines");
// criterionList.add("Branches");
// criterionList.add("Exceptions");
// criterionList.add("Output partitions");
// criterionList.add("Mutation");
criteriaList.setLayoutData(new GridData());
criteriaList.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
criteriaList.setBackground(myComposite.getBackground());
Label mylabel = new Label(myComposite, SWT.NONE);
mylabel.setLayoutData(new GridData());
mylabel.setText("Create assertions");
assertionButton = new Button(myComposite, SWT.CHECK);
assertionButton.setSelection(getAssertionsEnabled());
assertionButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label mylabelMinTests = new Label(myComposite, SWT.NONE);
mylabelMinTests.setLayoutData(new GridData());
mylabelMinTests.setText("Minimize tests");
minimizeTestsButton = new Button(myComposite, SWT.CHECK);
minimizeTestsButton.setSelection(getMinimizeTestsEnabled());
minimizeTestsButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label mylabelMinValues = new Label(myComposite, SWT.NONE);
mylabelMinValues.setLayoutData(new GridData());
mylabelMinValues.setText("Minimize values");
minimizeValuesButton = new Button(myComposite, SWT.CHECK);
minimizeValuesButton.setSelection(getMinimizeValuesEnabled());
minimizeValuesButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label timelabel = new Label(myComposite, SWT.NONE);
timelabel.setLayoutData(new GridData());
timelabel.setText("Search convergence time (s)");
time = new Spinner(myComposite, SWT.BORDER);
time.setMinimum(0);
time.setMaximum(600);
//time.setDigits(3);
time.setSelection(getTime());
//time.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label timelabel2 = new Label(myComposite, SWT.NONE);
timelabel2.setLayoutData(new GridData());
timelabel2.setText("Maximum test generation time (s)");
time2 = new Spinner(myComposite, SWT.BORDER);
time2.setMinimum(0);
time2.setMaximum(600);
//time.setDigits(3);
time2.setSelection(getGlobalTime());
//Label seedLabel= new Label(myComposite, SWT.NONE);
//seedLabel.setLayoutData(new GridData());
//seedLabel.setText("Random seed");
//seed = new Spinner(myComposite, SWT.BORDER);
//seed.setMinimum(0);
//seed.setMaximum(60000);
//seed.setSelection(getSeed());
// Label mylabel2 = new Label(myComposite, SWT.NONE);
// mylabel2.setLayoutData(new GridData());
// mylabel2.setText("Show report after test generation");
// reportButton = new Button(myComposite, SWT.CHECK);
// reportButton.setSelection(getReportEnabled());
// reportButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// reportButton.addSelectionListener(new SelectionListener() {
// /* (non-Javadoc)
// * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
// */
// @Override
// public void widgetSelected(SelectionEvent arg0) {
// plotButton.setEnabled(((Button) arg0.getSource()).getSelection());
// }
//
// @Override
// public void widgetDefaultSelected(SelectionEvent arg0) {
// plotButton.setEnabled(((Button) arg0.getSource()).getSelection());
// }
// });
// Label mylabel2a = new Label(myComposite, SWT.NONE);
// mylabel2a.setLayoutData(new GridData());
// mylabel2a.setText("Include plots in report (requires GNUPlot)");
// plotButton = new Button(myComposite, SWT.CHECK);
// plotButton.setSelection(getPlotEnabled());
// plotButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// plotButton.setEnabled(getReportEnabled());
Label mylabel3 = new Label(myComposite, SWT.NONE);
mylabel3.setLayoutData(new GridData());
mylabel3.setText("Use sandbox");
sandboxButton = new Button(myComposite, SWT.CHECK);
sandboxButton.setSelection(getSandboxEnabled());
sandboxButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label mylabel3a = new Label(myComposite, SWT.NONE);
mylabel3a.setLayoutData(new GridData());
mylabel3a.setText("Use scaffolding");
scaffoldingButton = new Button(myComposite, SWT.CHECK);
scaffoldingButton.setSelection(getScaffoldingEnabled());
scaffoldingButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// Label mylabel7 = new Label(myComposite, SWT.NONE);
// mylabel7.setLayoutData(new GridData());
// mylabel7.setText("Use EvoSuite JUnit runner in generated test suites");
// evosuiteRunnerButton = new Button(myComposite, SWT.CHECK);
// evosuiteRunnerButton.setSelection(getEvoSuiteRunnerEnabled());
// evosuiteRunnerButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// evosuiteRunnerButton.addSelectionListener(new SelectionListener() {
// /* (non-Javadoc)
// * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
// */
// @Override
// public void widgetSelected(SelectionEvent arg0) {
// deterministicButton.setEnabled(((Button) arg0.getSource()).getSelection());
// }
//
// @Override
// public void widgetDefaultSelected(SelectionEvent arg0) {
// deterministicButton.setEnabled(((Button) arg0.getSource()).getSelection());
// }
// });
//
Label mylabel4 = new Label(myComposite, SWT.NONE);
mylabel4.setLayoutData(new GridData());
mylabel4.setText("Transform nondeterministic calls\n (e.g. System.currentTimeMillis)");
deterministicButton = new Button(myComposite, SWT.CHECK);
deterministicButton.setSelection(getDeterministicEnabled());
deterministicButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// deterministicButton.setEnabled(getDeterministicEnabled());
Label mylabel6 = new Label(myComposite, SWT.NONE);
mylabel6.setLayoutData(new GridData());
mylabel6.setText("Instrument potential error conditions");
errorButton = new Button(myComposite, SWT.CHECK);
errorButton.setSelection(getErrorBranchesEnabled());
errorButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label mylabel5 = new Label(myComposite, SWT.NONE);
mylabel5.setLayoutData(new GridData());
mylabel5.setText("Check generic object contracts");
contractsButton = new Button(myComposite, SWT.CHECK);
contractsButton.setSelection(getContractsEnabled());
contractsButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label mylabel7 = new Label(myComposite, SWT.NONE);
mylabel7.setLayoutData(new GridData());
mylabel7.setText("Enable DSE during search");
dseButton = new Button(myComposite, SWT.CHECK);
dseButton.setSelection(getDSEEnabled());
dseButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label mylabel7a = new Label(myComposite, SWT.NONE);
mylabel7a.setLayoutData(new GridData());
mylabel7a.setText("Enable local search (memetic algorithm)");
lsButton = new Button(myComposite, SWT.CHECK);
lsButton.setSelection(getLSEnabled());
lsButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label mylabel8 = new Label(myComposite, SWT.NONE);
mylabel8.setLayoutData(new GridData());
mylabel8.setText("Suffix of EvoSuite generated tests");
testSuffix = new Text(myComposite, SWT.SINGLE | SWT.BORDER);
testSuffix.setText(getTestSuffix());
testSuffix.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// dseButton.setSelection(getDSEEnabled());
// dseButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return myComposite;
/*
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
composite.setLayout(layout);
GridData data = new GridData(GridData.FILL);
data.grabExcessHorizontalSpace = true;
composite.setLayoutData(data);
//Label enableLabel = new Label(composite, SWT.NONE);
//enableLabel.setText("Enable evosuite for this project: ");
Map<String, Set<Field>> fieldMap = new HashMap<String, Set<Field>>();
for (Field f : Properties.class.getFields()) {
if (f.isAnnotationPresent(Parameter.class)) {
Parameter p = f.getAnnotation(Parameter.class);
if (!fieldMap.containsKey(p.group()))
fieldMap.put(p.group(), new HashSet<Field>());
fieldMap.get(p.group()).add(f);
}
}
for (String groupName : fieldMap.keySet()) {
if (groupName.equals("Runtime"))
continue;
Label groupLabel = new Label(parent, SWT.SHADOW_IN);
groupLabel.setText(groupName);
//Group groupComposite = new Group(parent, SWT.NONE);
//groupComposite.setText(groupName);
//groupComposite.setSize(400, 200);
Composite groupComposite = new Composite(parent, SWT.NONE);
GridLayout groupLayout = new GridLayout(2, false);
groupComposite.setLayout(groupLayout);
GridData groupData = new GridData(GridData.FILL);
groupData.grabExcessHorizontalSpace = true;
//groupData.widthHint = 400;
groupComposite.setLayoutData(groupData);
for (Field field : fieldMap.get(groupName)) {
Parameter p = field.getAnnotation(Parameter.class);
Label optionLabel = new Label(groupComposite, SWT.WRAP);
optionLabel.setText(p.description());
optionLabel.setSize(200, 30);
try {
if (field.getType().equals(boolean.class)) {
Button button = new Button(groupComposite, SWT.CHECK);
button.setSelection(field.getBoolean(null));
} else if (field.getType().equals(int.class)) {
Spinner spinner = new Spinner(groupComposite, SWT.BORDER);
spinner.setMinimum(0);
spinner.setMaximum(1000);
spinner.setSelection(50);
} else if (field.getType().equals(float.class)) {
Text text = new Text(groupComposite, SWT.BORDER);
text.setText("" + field.getFloat(null));
} else if (field.getType().equals(double.class)) {
Text text = new Text(groupComposite, SWT.BORDER);
text.setText("" + field.getDouble(null));
} else if (field.getType().equals(String.class)) {
Text text = new Text(groupComposite, SWT.BORDER);
text.setText((String) field.get(null));
} else {
Label label = new Label(groupComposite, SWT.NONE);
label.setText("Type not yet supported");
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
return composite;
*/
}
protected boolean getAssertionsEnabled() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(ASSERTION_PROP_KEY);
if (value == null)
return true;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return true;
}
}
protected void setAssertionsEnabled(boolean enabled) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "true";
try {
resource.setPersistentProperty(ASSERTION_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected boolean getMinimizeTestsEnabled() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(MINIMIZE_TESTS_PROP_KEY);
if (value == null)
return true;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return true;
}
}
protected void setMinimizeTestsEnabled(boolean enabled) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "true";
try {
resource.setPersistentProperty(MINIMIZE_TESTS_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected boolean getMinimizeValuesEnabled() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(MINIMIZE_VALUES_PROP_KEY);
if (value == null)
return true;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return true;
}
}
protected void setMinimizeValuesEnabled(boolean enabled) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "false";
try {
resource.setPersistentProperty(MINIMIZE_VALUES_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected boolean getSandboxEnabled() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(SANDBOX_PROP_KEY);
if (value == null)
return true;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return false;
}
}
protected void setSandboxEnabled(boolean enabled) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "true";
try {
resource.setPersistentProperty(SANDBOX_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected boolean getScaffoldingEnabled() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(SCAFFOLDING_PROP_KEY);
if (value == null)
return true;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return false;
}
}
protected void setScaffoldingEnabled(boolean enabled) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "true";
try {
resource.setPersistentProperty(SCAFFOLDING_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected boolean getDeterministicEnabled() {
// if(!getEvoSuiteRunnerEnabled())
// return false;
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(DETERMINISTIC_PROP_KEY);
if (value == null)
return false;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return false;
}
}
protected void setDeterministicEnabled(boolean enabled) {
//if(!getEvoSuiteRunnerEnabled())
// return;
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "false";
try {
resource.setPersistentProperty(DETERMINISTIC_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected boolean getContractsEnabled() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(CONTRACTS_PROP_KEY);
if (value == null)
return false;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return false;
}
}
protected void setContractsEnabled(boolean enabled) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "false";
try {
resource.setPersistentProperty(CONTRACTS_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected boolean getErrorBranchesEnabled() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(ERROR_BRANCHES_PROP_KEY);
if (value == null)
return false;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return false;
}
}
protected void setErrorBranchesEnabled(boolean enabled) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "false";
try {
resource.setPersistentProperty(ERROR_BRANCHES_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected boolean getDSEEnabled() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(DSE_PROP_KEY);
if (value == null)
return false;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return false;
}
}
protected void setDSEEnabled(boolean enabled) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "false";
try {
resource.setPersistentProperty(DSE_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected boolean getLSEnabled() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(LS_PROP_KEY);
if (value == null)
return false;
return Boolean.parseBoolean(value);
} catch (CoreException e) {
return false;
}
}
protected void setLSEnabled(boolean enabled) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Boolean.toString(enabled);
if (value.equals(""))
value = "false";
try {
resource.setPersistentProperty(LS_PROP_KEY, value);
} catch (CoreException e) {
}
}
// protected boolean getReportEnabled() {
// IResource resource = ((IJavaProject) getElement()).getResource();
// try {
// String value = resource.getPersistentProperty(REPORT_PROP_KEY);
// if (value == null)
// return false;
// return Boolean.parseBoolean(value);
// } catch (CoreException e) {
// return false;
// }
// }
//
// protected void setReportEnabled(boolean enabled) {
//
// IResource resource = ((IJavaProject) getElement()).getResource();
// String value = Boolean.toString(enabled);
// if (value.equals(""))
// value = "false";
// if (value.equals("true"))
// plotButton.setEnabled(true);
// else
// plotButton.setEnabled(false);
// try {
//
// resource.setPersistentProperty(REPORT_PROP_KEY, value);
// } catch (CoreException e) {
// }
// }
// protected boolean getPlotEnabled() {
// if (!getReportEnabled())
// return false;
//
// IResource resource = ((IJavaProject) getElement()).getResource();
// try {
// String value = resource.getPersistentProperty(PLOT_PROP_KEY);
// if (value == null)
// return false;
// return Boolean.parseBoolean(value);
// } catch (CoreException e) {
// return false;
// }
// }
//
// protected void setPlotEnabled(boolean enabled) {
//
// IResource resource = ((IJavaProject) getElement()).getResource();
// String value = Boolean.toString(enabled);
// if (value.equals(""))
// value = "false";
// //if (value.equals("true"))
// // deterministicButton.setEnabled(true);
// //else
// // deterministicButton.setEnabled(false);
//
// try {
// resource.setPersistentProperty(PLOT_PROP_KEY, value);
// } catch (CoreException e) {
// }
// }
// protected boolean getEvoSuiteRunnerEnabled() {
// IResource resource = ((IJavaProject) getElement()).getResource();
// try {
// String value = resource.getPersistentProperty(RUNNER_PROP_KEY);
// if (value == null)
// return false;
// return Boolean.parseBoolean(value);
// } catch (CoreException e) {
// return false;
// }
// }
//
// protected void setEvoSuiteRunnerEnabled(boolean enabled) {
//
// IResource resource = ((IJavaProject) getElement()).getResource();
// String value = Boolean.toString(enabled);
// if (value.equals(""))
// value = "false";
// try {
// resource.setPersistentProperty(RUNNER_PROP_KEY, value);
// } catch (CoreException e) {
// }
// }
protected int getTime() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(TIME_PROP_KEY);
if (value == null)
return 20;
return Integer.parseInt(value);
} catch (CoreException e) {
return 20;
}
}
protected void setTime(int time) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Integer.toString(time);
if (value.equals(""))
value = "20";
try {
resource.setPersistentProperty(TIME_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected int getSeed() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(SEED_PROP_KEY);
if (value == null)
return 42;
return Integer.parseInt(value);
} catch (CoreException e) {
return 42;
}
}
protected void setSeed(int seed) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Integer.toString(seed);
if (value.equals(""))
value = "42";
try {
resource.setPersistentProperty(SEED_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected String[] getCriteria() {
IResource resource = ((IJavaProject) getElement()).getResource();
String[] defaultCriteria = new String[] {"Line", "Branch", "Exception", "WeakMutation"};
// The following criteria are not activated by default because "extend" doesn't work properly with them
// until the carver is fixed properly
//"Output", "Method", "MethodNoException", "CBranch"
try {
String value = resource.getPersistentProperty(CRITERIA_PROP_KEY);
if (value == null)
return defaultCriteria;
else {
StringTokenizer tokenizer = new StringTokenizer(value, ":");
int num = tokenizer.countTokens();
String[] values = new String[num];
for(int i = 0; i < num; i++) {
values[i] = tokenizer.nextToken();
}
return values;
}
} catch (CoreException e) {
return defaultCriteria;
}
}
protected void setCriteria(String value) {
IResource resource = ((IJavaProject) getElement()).getResource();
//String criterion = value.toLowerCase();
try {
resource.setPersistentProperty(CRITERIA_PROP_KEY, value);
// if (criterion.startsWith("defuse"))
// resource.setPersistentProperty(CRITERION_PROP_KEY, "defuse");
// else if (criterion.startsWith("weak"))
// resource.setPersistentProperty(CRITERION_PROP_KEY, "weakmutation");
// else if (criterion.startsWith("strong"))
// resource.setPersistentProperty(CRITERION_PROP_KEY, "strongmutation");
// else
// resource.setPersistentProperty(CRITERION_PROP_KEY, "branch");
} catch (CoreException e) {
}
}
protected int getGlobalTime() {
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(GLOBAL_TIME_PROP_KEY);
if (value == null)
return 60;
return Integer.parseInt(value);
} catch (CoreException e) {
return 60;
}
}
protected void setGlobalTime(int time) {
IResource resource = ((IJavaProject) getElement()).getResource();
String value = Integer.toString(time);
if (value.equals(""))
value = "^0";
try {
resource.setPersistentProperty(GLOBAL_TIME_PROP_KEY, value);
} catch (CoreException e) {
}
}
protected String getTestSuffix() {
return Properties.JUNIT_SUFFIX;
/*
IResource resource = ((IJavaProject) getElement()).getResource();
try {
String value = resource.getPersistentProperty(TEST_SUFFIX_PROP_KEY);
if (value == null)
return "EvoSuiteTest";
return value;
} catch (CoreException e) {
return "EvoSuiteTest";
}*/
}
protected void setTestSuffix(String suffix) {
try {
IResource resource = ((IJavaProject) getElement()).getResource();
if (! suffix.equals("")) {
Properties.JUNIT_SUFFIX = suffix;
resource.setPersistentProperty(TEST_SUFFIX_PROP_KEY, suffix);
}
} catch (CoreException e) {
e.printStackTrace();
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performOk()
*/
@Override
public boolean performOk() {
// setReportEnabled(reportButton.getSelection());
// setPlotEnabled(plotButton.getSelection());
setAssertionsEnabled(assertionButton.getSelection());
setMinimizeTestsEnabled(minimizeTestsButton.getSelection());
setMinimizeValuesEnabled(minimizeValuesButton.getSelection());
setSandboxEnabled(sandboxButton.getSelection());
setScaffoldingEnabled(scaffoldingButton.getSelection());
setDeterministicEnabled(deterministicButton.getSelection());
setTime(time.getSelection());
boolean first = true;
String criteria = "";
for(TableItem item : criteriaList.getItems()) {
if(item.getChecked()) {
if(first)
first = false;
else
criteria += ":";
criteria += item.getText();
}
}
setCriteria(criteria);
setContractsEnabled(contractsButton.getSelection());
setErrorBranchesEnabled(errorButton.getSelection());
setDSEEnabled(dseButton.getSelection());
setLSEnabled(lsButton.getSelection());
setTestSuffix(testSuffix.getText());
// setEvoSuiteRunnerEnabled(evosuiteRunnerButton.getSelection());
setGlobalTime(time2.getSelection());
return super.performOk();
}
@Override
protected void performDefaults() {
super.performDefaults();
setTime(10);
setGlobalTime(60);
setAssertionsEnabled(true);
setMinimizeTestsEnabled(true);
setMinimizeValuesEnabled(false);
// setReportEnabled(false);
// setPlotEnabled(false);
setSandboxEnabled(true);
setScaffoldingEnabled(true);
setDeterministicEnabled(false);
setContractsEnabled(false);
setErrorBranchesEnabled(false);
setDSEEnabled(false);
setLSEnabled(false);
// setEvoSuiteRunnerEnabled(false);
// setCriteria("Line:Branch:Exception:WeakMutation:Output:Method:MethodNoException:CBranch");
setCriteria("Line:Branch:Exception:WeakMutation"); // Output:Method:MethodNoException:CBranch
setTestSuffix(Properties.JUNIT_SUFFIX);
}
}