package pebl.benchmark.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import pebl.HasExtensions;
import pebl.MapAdapter;
/**
* TestCase implements the builder pattern using a fluent interface.
*/
public class TestCase implements HasExtensions {
/**
* List of test steps.
*/
private List<TestStep> testSteps = new ArrayList<>();
/**
* The name of the test case.
*/
private String name = "Good-Case";
private int number = 1;
@XmlJavaTypeAdapter(MapAdapter.class)
private final Map<String, String> extensions = new HashMap<>();
public TestCase addStep(TestStep step) {
testSteps.add(step);
return this;
}
public Map<String, String> getExtensions() {
return extensions;
}
public TestCase addExtension(String key, String value) {
extensions.put(key, value);
return this;
}
@XmlElement
@XmlElementRef
@XmlElementWrapper( name="testSteps" )
public List<TestStep> getTestSteps() {
return testSteps;
}
@XmlAttribute(required = true)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlAttribute(required = true)
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
@Override
public String toString() {
return "TestCase{" + "testSteps=" + testSteps + ", name='" + name + "\'" + "}";
}
}