#![cfg(test)]
use std::fmt::Debug;
pub fn assert_equal<A>(expected_value: &A, actual_value: &A)
where
A: ?Sized + Debug + Eq,
{
let expected_text = format!("{:#?}", expected_value);
assert_expected_debug(&expected_text, actual_value);
assert_eq!(expected_value, actual_value);
}
pub fn assert_expected_debug<A>(expected_text: &str, actual_value: &A)
where
A: ?Sized + Debug,
{
let actual_text = format!("{:#?}", actual_value);
if expected_text == actual_text {
return;
}
println!("# expected_text");
println!("{}", expected_text);
println!("# actual_text");
println!("{}", actual_text);
println!("# diff");
for diff in diff::lines(&expected_text, &actual_text) {
match diff {
diff::Result::Left(l) => println!("-{}", l),
diff::Result::Both(l, _) => println!(" {}", l),
diff::Result::Right(r) => println!("+{}", r),
}
}
panic!("debug comparison failed");
}