]> git.lizzy.rs Git - rust.git/commitdiff
Add message argument to `assert_eq` macro
authorMitsunori Komatsu <komamitsu@gmail.com>
Mon, 30 May 2016 16:53:14 +0000 (01:53 +0900)
committerMitsunori Komatsu <komamitsu@gmail.com>
Tue, 21 Jun 2016 06:14:15 +0000 (15:14 +0900)
src/libcore/macros.rs
src/test/run-pass/assert-eq-macro-success.rs

index a40608b0762d66a4e74966312d48ff5c1c182e85..376d2792c445c5e31c9ca3be90864f04a2724985 100644 (file)
@@ -94,7 +94,18 @@ macro_rules! assert_eq {
                 }
             }
         }
-    })
+    });
+    ($left:expr , $right:expr, $($arg:tt)*) => ({
+        match (&($left), &($right)) {
+            (left_val, right_val) => {
+                if !(*left_val == *right_val) {
+                    panic!("assertion failed: `(left == right)` \
+                           (left: `{:?}`, right: `{:?}`): {}", left_val, right_val,
+                           format_args!($($arg)*))
+                }
+            }
+        }
+    });
 }
 
 /// Ensure that a boolean expression is `true` at runtime.
index 9662e1ff33d11238c4a3f6fde6ab312889a278c3..3110e22d5da135eb22798c7708e0daf46c448a1b 100644 (file)
@@ -16,4 +16,7 @@ pub fn main() {
     assert_eq!("abc".to_string(),"abc".to_string());
     assert_eq!(Box::new(Point{x:34}),Box::new(Point{x:34}));
     assert_eq!(&Point{x:34},&Point{x:34});
+    assert_eq!(42, 42, "foo bar");
+    assert_eq!(42, 42, "a {} c", "b");
+    assert_eq!(42, 42, "{x}, {y}, {z}", x = 1, y = 2, z = 3);
 }