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