#![deny(missing_docs)]
pub enum Outcome<'a> {
Passed(&'a str),
Failed(&'a str),
Ignored,
}
impl<'a> Outcome<'a> {
pub fn is_failed(&self) -> bool {
use Outcome::*;
match *self {
Passed(_) | Ignored => false,
Failed(_) => true,
}
}
}
#[derive(Debug, PartialEq)]
pub enum Summary {
Ok,
NotOk,
}
impl Summary {
pub fn is_ok(&self) -> bool {
*self == Summary::Ok
}
}
pub trait Check {
fn check(&self, f: &mut FnMut(&Outcome));
fn check_ok(&self, f: &mut FnMut(&Outcome)) -> Summary {
let mut ok = Summary::Ok;
self.check(&mut |o| {
if o.is_failed() {
ok = Summary::NotOk;
}
f(o)
});
ok
}
}