1#[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#[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}