diff options
| author | John Clements <clements@racket-lang.org> | 2013-03-13 12:10:32 -0700 |
|---|---|---|
| committer | John Clements <clements@racket-lang.org> | 2013-03-20 13:27:45 -0700 |
| commit | ab8e46b0660e076e629e6775ed8da9890c5fbf1f (patch) | |
| tree | 75200518eac0c8128d10fae12cbaa556a2c2f2ff | |
| parent | 0847d52a8677a39525b7cf7a09571851b6deb8b9 (diff) | |
| download | rust-ab8e46b0660e076e629e6775ed8da9890c5fbf1f.tar.gz rust-ab8e46b0660e076e629e6775ed8da9890c5fbf1f.zip | |
add assert_eq! macro
the assert_eq! macro compares its arguments and fails if they're not equal. It's more informative than fail_unless!, because it explicitly writes the given and expected arguments on failure.
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 10 | ||||
| -rw-r--r-- | src/test/run-fail/assert-eq-macro-fail.rs | 8 | ||||
| -rw-r--r-- | src/test/run-pass/assert-eq-macro-success.rs | 10 |
3 files changed, 28 insertions, 0 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index ad05e2f21e6..030cdab7951 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -464,6 +464,15 @@ pub fn core_macros() -> ~str { } ) + macro_rules! assert_eq ( + ($given:expr , $expected:expr) => + ({let given_val = $given; + let expected_val = $expected; + // check both directions of equality.... + if !((given_val == expected_val) && (expected_val == given_val)) { + fail!(fmt!(\"expected: %?, given: %?\",expected_val,given_val)); + }})) + macro_rules! condition ( { $c:ident: $in:ty -> $out:ty; } => { @@ -481,6 +490,7 @@ pub fn core_macros() -> ~str { } ) + }"; } diff --git a/src/test/run-fail/assert-eq-macro-fail.rs b/src/test/run-fail/assert-eq-macro-fail.rs new file mode 100644 index 00000000000..a5f438903ce --- /dev/null +++ b/src/test/run-fail/assert-eq-macro-fail.rs @@ -0,0 +1,8 @@ +// error-pattern:expected: 15, given: 14 + +#[deriving_eq] +struct Point { x : int } + +fn main() { + assert_eq!(14,15); +} diff --git a/src/test/run-pass/assert-eq-macro-success.rs b/src/test/run-pass/assert-eq-macro-success.rs new file mode 100644 index 00000000000..c929b5c6246 --- /dev/null +++ b/src/test/run-pass/assert-eq-macro-success.rs @@ -0,0 +1,10 @@ +#[deriving_eq] +struct Point { x : int } + +fn main() { + assert_eq!(14,14); + assert_eq!(~"abc",~"abc"); + assert_eq!(~Point{x:34},~Point{x:34}); + assert_eq!(&Point{x:34},&Point{x:34}); + assert_eq!(@Point{x:34},@Point{x:34}); +} |
