1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
pub use predicates;
pub use predicates_tree;

/// Simple macro to make assertions with a better error message.
///
/// # Examples
///
/// ```
/// use assert_that::assert_that;
///
/// assert_that!("Hello World", str::similar("Hello World"));
///
/// assert_that!("Hello World", str::diff("Goodbye World"));
///
/// // Can be used with more complex predicates
/// assert_that!(
///     &1234,
///     ge(-5).and(le(i16::MAX))
/// );
/// ```
#[macro_export]
macro_rules! assert_that {
    ($value:expr, $pred:expr $(,)?) => {{
        use $crate::predicates::prelude::*;
        use $crate::predicates_tree::CaseTreeExt;

        use predicate::*;

        if let Some(case) = $pred.find_case(false, $value) {
            panic!("{}", case.tree());
        };
    }};
}