asserts_rs/
debug.rs

1///
2/// ```rust
3/// use asserts_rs::*;
4/// assertsd_eq!(1, 1); //OK
5/// assertsd_eq!(1, 1, 1); // OK
6/// ```
7/// ```should_panic
8/// use asserts_rs::*;
9/// assertsd_eq!(1, 1, 1, 2); // panic 1 not equal to 2
10/// ```
11///
12#[macro_export]
13macro_rules! assertsd_eq {
14    ($expresson:expr, $expected:expr) => {
15        debug_assert_eq!($expresson, $expected);
16        assert_eq!($expresson, $expected);
17    };
18
19    ($expresson:expr, $expected:expr, $($others:expr),+) => {
20        debug_assert_eq!($expresson, $expected);
21        assertsd_eq!($expresson, $($others),+);
22    };
23}
24
25///
26/// ```rust
27/// use asserts_rs::*;
28/// assertsd_ne!(1, 2); //OK
29/// assertsd_ne!(1, 2, 3); // OK
30/// ```
31/// ```should_panic
32/// use asserts_rs::*;
33/// assertsd_ne!(1, 2, 1, 3); // panic 1 equal to 1
34/// ```
35///
36#[macro_export]
37macro_rules! assertsd_ne {
38    ($expresson:expr, $expected:expr) => {
39        debug_assert_ne!($expresson, $expected);
40    };
41
42    ($expresson:expr, $expected:expr, $($others:expr),+) => {
43        debug_assert_ne!($expresson, $expected);
44        assertsd_ne!($expresson, $($others),+);
45    };
46}
47
48///
49/// ```rust
50/// use asserts_rs::*;
51/// assertsd_eq_one_of!(1, 1); //OK
52/// assertsd_eq_one_of!(1, 1, 2); // OK
53/// ```
54/// ```should_panic
55/// use asserts_rs::*;
56/// assertsd_eq_one_of!(1, 2, 3); // panic 1 is not equals to any of numbers in (2, 3)s
57/// ```
58///
59#[macro_export]
60macro_rules! assertsd_eq_one_of {
61    ($expresson:expr, $expected:expr) => {
62        debug_assert_eq!($expresson, $expected);
63    };
64
65    ($expresson:expr, $expected:expr, $($others:expr),+) => {
66        if ($expresson != $expected) {
67            assertsd_eq_one_of!($expresson, $($others),+);
68        } else {
69            debug_assert_eq!($expresson, $expected);
70        }
71    };
72}
73
74///
75/// ```rust
76/// use asserts_rs::*;
77/// assertsd_ne_one_of!(1, 2); //OK
78/// assertsd_ne_one_of!(1, 2, 3); // OK
79/// ```
80/// ```should_panic
81/// use asserts_rs::*;
82/// assertsd_ne_one_of!(1, 1, 1); // panic 1 is equals to all of numbers in (1, 1)
83/// ```
84///
85#[macro_export]
86macro_rules! assertsd_ne_one_of {
87    ($expresson:expr, $expected:expr) => {
88        debug_assert_ne!($expresson, $expected);
89    };
90
91    ($expresson:expr, $expected:expr, $($others:expr),+) => {
92        if ($expresson == $expected) {
93            assertsd_ne_one_of!($expresson, $($others),+);
94        } else {
95            debug_assert_ne!($expresson, $expected);
96        }
97    };
98}
99
100#[cfg(test)]
101mod tests {
102    #[test]
103    fn test_assertsd_eq() {
104        assertsd_eq!(1, 1);
105        assertsd_eq!(1, 1, 1);
106    }
107
108    #[test]
109    #[should_panic]
110    fn test_assertsd_eq_should_fail() {
111        assertsd_eq!(1, 2);
112        assertsd_eq!(1, 2, 3);
113    }
114
115    #[test]
116    fn test_assertsd_ne() {
117        assertsd_ne!(1, 2);
118        assertsd_ne!(1, 2, 3);
119    }
120
121    #[test]
122    #[should_panic]
123    fn test_assertsd_ne_should_fail() {
124        assertsd_ne!(1, 1);
125        assertsd_ne!(1, 1, 1);
126    }
127
128    #[test]
129    fn test_assertsd_eq_one_of() {
130        assertsd_eq_one_of!(1, 1);
131        assertsd_eq_one_of!(1, 1, 2);
132    }
133
134    #[test]
135    #[should_panic]
136    fn test_assertsd_eq_one_of_should_fail() {
137        assertsd_eq_one_of!(1, 2);
138        assertsd_eq_one_of!(1, 2, 3);
139    }
140
141    #[test]
142    fn test_assertsd_ne_one_of() {
143        assertsd_ne_one_of!(1, 2);
144        assertsd_ne_one_of!(1, 1, 2);
145        assertsd_ne_one_of!(1, 2, 3);
146    }
147
148    #[test]
149    #[should_panic]
150    fn test_assertsd_ne_one_of_should_fail() {
151        assertsd_ne_one_of!(1, 1);
152        assertsd_ne_one_of!(1, 1, 1);
153    }
154}