use crate::prelude::*;
#[derive(Debug)]
pub struct TestRunnerResult {
pub suite_results: Vec<SuiteResult>,
pub suites: ResultCount,
pub cases: ResultCount, }
impl Into<TestRunnerResult> for Vec<SuiteResult> {
fn into(self) -> TestRunnerResult {
TestRunnerResult::from_suite_results(self)
}
}
impl TestRunnerResult {
pub fn did_fail(&self) -> bool { self.cases.failed > 0 }
pub fn from_suite_results(suite_results: Vec<SuiteResult>) -> Self {
let mut suites = ResultCount::default();
let cases = suite_results.iter().fold(
ResultCount::default(),
|mut acc, item| {
acc.total += item.num_tests;
acc.failed += item.failed.len();
acc.skipped += item.num_ignored;
suites.total += 1;
if item.failed.len() > 0 {
suites.failed += 1;
}
acc
},
);
TestRunnerResult {
suite_results,
suites,
cases,
}
}
}