| pub trait Testable { | |
| fn name(&self) -> String; | |
| fn run(&self) -> Option<String>; // None will be success, Some is the error message | |
| } | |
| pub fn runner(tests: &[&dyn Testable]) { | |
| for t in tests { | |
| print!("{}........{}", t.name(), t.run().unwrap_or_else(|| "SUCCESS".to_string())); | |
| } | |
| } |