claym/
assert_le.rs

1/// Asserts that first expression is less or equal than the second.
2#[macro_export]
3macro_rules! assert_le {
4    ($left:expr, $right:expr $(,)?) => {
5        match (&$left, &$right) {
6            (left, right) if !(*left <= *right) => $crate::assert_comparison_failed!(
7                $crate::panicking::Ref(left),
8                $crate::panicking::Comparison::LessEqual,
9                $crate::panicking::Ref(right),
10            ),
11            _ => {}
12        }
13    };
14    ($left:expr, $right:expr, $($arg:tt)+) => {
15        match (&$left, &$right) {
16            (left, right) if !(*left <= *right) => $crate::assert_comparison_failed!(
17                $crate::panicking::Ref(left),
18                $crate::panicking::Comparison::LessEqual,
19                $crate::panicking::Ref(right),
20                $($arg)+
21            ),
22            _ => {}
23        }
24    };
25}
26
27/// Asserts that first expression is less or equal than the second.
28#[macro_export]
29macro_rules! debug_assert_le {
30    ($($arg:tt)*) => {
31        if cfg!(debug_assertions) {
32            $crate::assert_le!($($arg)*);
33        }
34    }
35}
36
37#[cfg(test)]
38mod tests {
39    #[test]
40    #[should_panic(expected = "assertion failed: left <= right\n left: `2`\nright: `1`")]
41    fn check_assert_le_panic() {
42        assert_le!(2, 1);
43    }
44
45    #[test]
46    #[should_panic(
47        expected = "assertion failed: left <= right\n left: `2`\nright: `1`\ni'm confused"
48    )]
49    fn check_assert_le_panic_with_message() {
50        assert_le!(2, 1, "i'm confused");
51    }
52
53    #[test]
54    fn check_assert_le_pass() {
55        assert_le!(1, 2);
56        assert_le!(2, 2);
57    }
58}