about summary refs log tree commit diff
path: root/src/libsyntax/ext
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2013-05-06 16:10:31 -0400
committerNiko Matsakis <niko@alum.mit.edu>2013-05-06 16:10:31 -0400
commit2e4790ca061cd256ab4cb63a269ecf688e25278c (patch)
tree0d890fd7c9775c88e6566f4ad3330ae5974fa982 /src/libsyntax/ext
parent0ef4e860da1fb755b9fff5d1b30bee3974514ea2 (diff)
parenta5891bebc132d4c373a5a5ffc93ba1bea2e8beb5 (diff)
downloadrust-2e4790ca061cd256ab4cb63a269ecf688e25278c.tar.gz
rust-2e4790ca061cd256ab4cb63a269ecf688e25278c.zip
Merge remote-tracking branch 'mozilla/incoming' into issue-5910-dyna-freeze
Diffstat (limited to 'src/libsyntax/ext')
-rw-r--r--src/libsyntax/ext/expand.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs
index 965d95789c4..0f2ad4cd54a 100644
--- a/src/libsyntax/ext/expand.rs
+++ b/src/libsyntax/ext/expand.rs
@@ -486,6 +486,42 @@ pub fn core_macros() -> ~str {
         )
     )
 
+    macro_rules! assert_approx_eq (
+        ($given:expr , $expected:expr) => (
+            {
+                use core::cmp::ApproxEq;
+
+                let given_val = $given;
+                let expected_val = $expected;
+                // check both directions of equality....
+                if !(
+                    given_val.approx_eq(&expected_val) &&
+                    expected_val.approx_eq(&given_val)
+                ) {
+                    fail!(\"left: %? does not approximately equal right: %?\",
+                          given_val, expected_val);
+                }
+            }
+        );
+        ($given:expr , $expected:expr , $epsilon:expr) => (
+            {
+                use core::cmp::ApproxEq;
+
+                let given_val = $given;
+                let expected_val = $expected;
+                let epsilon_val = $epsilon;
+                // check both directions of equality....
+                if !(
+                    given_val.approx_eq_eps(&expected_val, &epsilon_val) &&
+                    expected_val.approx_eq_eps(&given_val, &epsilon_val)
+                ) {
+                    fail!(\"left: %? does not approximately equal right: %? with epsilon: %?\",
+                          given_val, expected_val, epsilon_val);
+                }
+            }
+        )
+    )
+
     macro_rules! condition (
 
         { $c:ident: $in:ty -> $out:ty; } => {