package com.jazzautomation.report;
import org.threeten.bp.LocalDate;
import java.util.ArrayList;
import java.util.List;
public class SuiteResult extends ResultBase
{
private List<FeatureResult> featureResults = new ArrayList<>();
private double successRate = 1.0;
private LocalDate timePerformed = LocalDate.now();
public void addFeatureResult(FeatureResult featureResult)
{
featureResults.add(featureResult);
}
public void calculateSuccessRate()
{
int numFailedResults = 0;
for (FeatureResult featureResult : featureResults)
{
if (!featureResult.isSuccess())
{
numFailedResults++;
}
}
if (numFailedResults > 0)
{
setSuccess(false);
}
if (!featureResults.isEmpty())
{
successRate = (featureResults.size() - numFailedResults) / featureResults.size();
}
}
// ------------------------ CANONICAL METHODS ------------------------
public String toString()
{
StringBuilder results = new StringBuilder();
results.append("Overall success: ").append(isSuccess()).append('\n');
results.append("Duration: ").append(getDuration()).append(" seconds\n");
results.append("Success rate: ").append(successRate).append('\n');
results.append("Features:" + '\n');
for (FeatureResult featureResult : featureResults)
{
results.append("\tFeature: ").append(featureResult.getFeature().getDescription().trim()).append('\n');
results.append("\t\tSuccess: ").append(featureResult.isSuccess()).append('\n');
results.append("\t\tDuration: ").append(featureResult.getDuration()).append(" seconds\n");
results.append("\t\tSuccess rate: ").append(featureResult.getSuccessRate()).append('\n');
}
return results.toString();
}
// --------------------- GETTER / SETTER METHODS ---------------------
public List<FeatureResult> getFeatureResults()
{
return featureResults;
}
public void setFeatureResults(List<FeatureResult> featureResults)
{
this.featureResults = featureResults;
}
public double getSuccessRate()
{
return successRate;
}
public void setSuccessRate(double successRate)
{
this.successRate = successRate;
}
public LocalDate getTimePerformed()
{
return timePerformed;
}
public void setTimePerformed(LocalDate timePerformed)
{
this.timePerformed = timePerformed;
}
}