Newer
Older
package fr.emse.gitlab.saref.entities.tests;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import fr.emse.gitlab.saref.entities.git.MasterVersion;
import fr.emse.gitlab.saref.entities.git.ReleaseVersion;
import fr.emse.gitlab.saref.entities.git.Version;
/**
* @author Omar Qawasmeh
*
*
*/
@XmlRootElement(name = "testsuites")
@XmlType(propOrder = { "name", "tests", "failures", "errors", "testSuitesList" })
public class TestSuites implements Serializable {
@XmlAttribute
@XmlElement(name="testsuite")
private List<TestSuite> testSuitesList = new ArrayList<>();
private transient Map<String, TestSuite> testSuitesMap;
public TestSuites() {}
public TestSuites(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getFailures() {
return failures;
}
public int getErrors() {
return errors;
}
public TestSuite get(String name) {
if(testSuitesMap == null) {
testSuitesMap = new HashMap<>();
for(TestSuite testSuite : testSuitesList) {
testSuitesMap.put(testSuite.getName(), testSuite);
}
}
TestSuite testSuite = testSuitesMap.get(name);
if(testSuite == null) {
testSuite = new TestSuite(this, name);
testSuitesMap.put(name, testSuite);
testSuitesList.add(testSuite);
}
return testSuite;
testSuitesList.removeIf((ts) -> {
return ts.getErrors() + ts.getFailures() == 0;
});
testSuitesMap.values().removeIf((ts) -> {
return ts.getErrors() + ts.getFailures() == 0;
});
testSuitesList.forEach((ts)->{
// put errors first
Collections.sort(ts.getTestCases(), new Comparator<TestCase>() {
@Override
public int compare(TestCase o1, TestCase o2) {
if (o1.getStatus() == o2.getStatus()) {
return 0;
}
if (o1.getStatus() == TestCase.Status.ERROR.getName()) {
return 1;
}
if (o2.getStatus() == TestCase.Status.ERROR.getName()) {
return 1;
}
return 0;
}
});
});