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");
     }
 }