public static function assertion_stats(array $tests, $test_name = null)
{
$total = 0;
$pass = 0;
$fail = 0;
$expected_fail = 0;
$test_asserts = function ($test_name, $assertions) {
$total = 0;
$pass = 0;
$fail = 0;
$expected_fail = 0;
foreach ($assertions as $ass) {
if ($ass['result'] === \FUnit::PASS) {
$pass++;
} elseif ($ass['result'] === \FUnit::FAIL) {
$fail++;
if ($ass['expected_fail']) {
$expected_fail++;
}
}
$total++;
}
return compact('total', 'pass', 'fail', 'expected_fail');
};
if ($test_name) {
$assertions = $tests[$test_name]['assertions'];
$rs = $test_asserts($test_name, $assertions);
$total += $rs['total'];
$pass += $rs['pass'];
$fail += $rs['fail'];
$expected_fail += $rs['expected_fail'];
} else {
foreach ($tests as $test_name => $tdata) {
$assertions = $tests[$test_name]['assertions'];
$rs = $test_asserts($test_name, $assertions);
$total += $rs['total'];
$pass += $rs['pass'];
$fail += $rs['fail'];
$expected_fail += $rs['expected_fail'];
}
}
return compact('total', 'pass', 'fail', 'expected_fail');
}