1 unstable release
Uses old Rust 2015
0.2.0 | Aug 30, 2015 |
---|
#86 in #assertions
7KB
120 lines
rust-passert
Pretty/Power assertion macros for rust
Overview
An assert macro in the spirit of [Spock/Groovy assertions] (http://docs.groovy-lang.org/latest/html/documentation/core-testing-guide.html#_power_assertions) which evaluates and prints subexpressions, simplifying failure analysis
Example
#![feature(plugin)]
#![plugin(passert_macros)]
extern crate passert;
#[test]
#[should_panic]
fn it_works() {
let a = 3;
let b = 4;
passert!(a + 2 + 3 == -b);
}
Output
running 1 test
Assertion failed:
a + 2 + 3 == -b
| | | | ||
3 5 8 | |4
| -4
false
thread 'it_works' panicked at 'Assertion failed: a + 2 + 3 == -b', src/lib.rs:11
Limitations/Caveats
- All displayed subexpressions must implement
Debug
. - The transformation of subexpression to strings via
Debug
is done after the whole expression has been evaluated. In cases where other subexpressions cause changes to previously evaluated subexpression the displayed value may be incorrect. - The logical expressions
&&
and||
are not evaluated lazily. - A new binding is created for each subexpression, this may have unintended side effects.