Improve strictness of assertions in tests
diff --git a/src/lib.rs b/src/lib.rs
index e8adbd5..1803118 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -348,9 +348,11 @@
use std::prelude::v1::*;
macro_rules! t {
- ($a:expr, $b:expr) => ({
- assert_eq!(super::demangle($a).to_string(), $b);
- })
+ ($a:expr, $b:expr) => (assert!(ok($a, $b)))
+ }
+
+ macro_rules! t_err {
+ ($a:expr) => (assert!(ok_err($a)))
}
macro_rules! t_nohash {
@@ -359,11 +361,31 @@
})
}
+ fn ok(sym: &str, expected: &str) -> bool {
+ match super::try_demangle(sym) {
+ Ok(s) => s.to_string() == expected,
+ Err(_) => {
+ println!("error demangling");
+ false
+ }
+ }
+ }
+
+ fn ok_err(sym: &str) -> bool {
+ match super::try_demangle(sym) {
+ Ok(_) => {
+ println!("succeeded in demangling");
+ false
+ }
+ Err(_) => super::demangle(sym).to_string() == sym,
+ }
+ }
+
#[test]
fn demangle() {
- t!("test", "test");
+ t_err!("test");
t!("_ZN4testE", "test");
- t!("_ZN4test", "_ZN4test");
+ t_err!("_ZN4test");
t!("_ZN4test1a2bcE", "test::a::bc");
}
@@ -451,7 +473,7 @@
#[test]
fn demangle_ignores_suffix_that_doesnt_look_like_a_symbol() {
- t!("_ZN3fooE.llvm moocow", "_ZN3fooE.llvm moocow");
+ t_err!("_ZN3fooE.llvm moocow");
}
#[test]
@@ -468,6 +490,6 @@
#[test]
fn invalid_no_chop() {
- t!("_ZNfooE", "_ZNfooE");
+ t_err!("_ZNfooE");
}
}