package com.redhat.ceylon.test.eclipse.plugin.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
public class TestElement implements Serializable {
private static final long serialVersionUID = 1L;
public enum State {
UNDEFINED,
RUNNING,
SUCCESS,
FAILURE,
ERROR,
SKIPPED_OR_ABORTED;
public boolean isFinished() {
return this == SUCCESS || this == FAILURE || this == ERROR || this == SKIPPED_OR_ABORTED;
}
public boolean isFailureOrError() {
return this == FAILURE || this == ERROR;
}
public boolean canShowStackTrace() {
return this == FAILURE || this == ERROR || this == State.SKIPPED_OR_ABORTED;
}
}
private String shortName;
private String packageName;
private String qualifiedName;
private String variant;
private Long variantIndex;
private State state;
private String exception;
private String expectedValue;
private String actualValue;
private long elapsedTimeInMilis;
private List<TestElement> children = new ArrayList<TestElement>();
public String getShortName() {
return shortName;
}
public String getPackageName() {
return packageName;
}
public String getQualifiedName() {
return qualifiedName;
}
public void setQualifiedName(String qualifiedName) {
this.qualifiedName = qualifiedName;
int packageSeparatorIndex = qualifiedName.indexOf("::");
if (packageSeparatorIndex != -1) {
String tmp = qualifiedName.substring(packageSeparatorIndex + 2);
int memberSeparatorIndex = tmp.lastIndexOf(".");
if (memberSeparatorIndex != -1) {
shortName = tmp.substring(memberSeparatorIndex + 1);
} else {
shortName = tmp;
}
packageName = qualifiedName.substring(0, packageSeparatorIndex);
} else {
shortName = qualifiedName;
packageName = "";
}
}
public String getVariant() {
return variant;
}
public void setVariant(String variant) {
this.variant = variant;
}
public Long getVariantIndex() {
return variantIndex;
}
public void setVariantIndex(Long variantIndex) {
this.variantIndex = variantIndex;
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
public String getException() {
return exception;
}
public void setException(String exception) {
this.exception = exception;
}
public String getExpectedValue() {
return expectedValue;
}
public void setExpectedValue(String expectedValue) {
this.expectedValue = expectedValue;
}
public String getActualValue() {
return actualValue;
}
public void setActualValue(String actualValue) {
this.actualValue = actualValue;
}
public long getElapsedTimeInMilis() {
return elapsedTimeInMilis;
}
public void setElapsedTimeInMilis(long elapsedTimeInMilis) {
this.elapsedTimeInMilis = elapsedTimeInMilis;
}
public List<TestElement> getChildren() {
return Collections.unmodifiableList(children);
}
public void setChildren(List<TestElement> children) {
this.children = new ArrayList<TestElement>(children);
}
public void addChild(TestElement testElement) {
children.add(testElement);
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if(obj instanceof TestElement) {
TestElement e2 = (TestElement) obj;
return Objects.equals(qualifiedName, e2.qualifiedName) &&
Objects.equals(variantIndex, e2.variantIndex);
}
return false;
}
@Override
public int hashCode() {
return qualifiedName != null ? qualifiedName.hashCode() : 0;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("TestElement");
builder.append("[");
builder.append("name=").append(qualifiedName).append(", ");
builder.append("state=").append(state);
if(variant != null) {
builder.append(", variant=").append(variant);
}
builder.append("]");
return builder.toString();
}
}