#[macro_export]
macro_rules! assert_eq_hex {
($left:expr, $right:expr $(,)?) => ({
match (&$left, &$right) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
panic!(r#"assertion `left == right` failed
left: {:#x?}
right: {:#x?}"#, &*left_val, &*right_val)
}
}
}
});
($left:expr, $right:expr, $($arg:tt)+) => ({
match (&($left), &($right)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
panic!(r#"assertion `left == right` failed: {}
left: {:#x?}
right: {:#x?}"#, format_args!($($arg)+), &*left_val, &*right_val)
}
}
}
});
}
#[macro_export]
macro_rules! assert_ne_hex {
($left:expr, $right:expr $(,)?) => ({
match (&$left, &$right) {
(left_val, right_val) => {
if *left_val == *right_val {
panic!(r#"assertion `left != right` failed
left: {:#x?}
right: {:#x?}"#, &*left_val, &*right_val)
}
}
}
});
($left:expr, $right:expr, $($arg:tt)+) => ({
match (&($left), &($right)) {
(left_val, right_val) => {
if *left_val == *right_val {
panic!(r#"assertion `left != right` failed: {}
left: {:#x?}
right: {:#x?}"#, format_args!($($arg)+), &*left_val, &*right_val)
}
}
}
});
}
#[cfg(test)]
mod tests {
use crate::{assert_eq_hex, assert_ne_hex};
#[test]
#[should_panic(expected = r#"assertion `left == right` failed
left: 0x50
right: 0x46"#)]
fn test_eq_0() {
assert_eq_hex!(0x50, 0x46);
}
#[test]
#[should_panic(expected = r#"assertion `left == right` failed
left: 0xff
right: 0x46"#)]
fn test_eq_1() {
assert_eq_hex!(0xff, 0x46);
}
#[test]
#[should_panic(expected = r#"assertion `left == right` failed
left: 0xff
right: 0x46"#)]
fn test_eq_2() {
assert_eq_hex!(0xff, 0x46);
}
#[test]
#[should_panic(expected = r#"assertion `left == right` failed
left: [
0x0,
0x1,
0x2,
]
right: [
0x46,
0x50,
0x40,
]"#)]
fn test_eq_3() {
assert_eq_hex!(vec![0x00, 0x01, 0x02], vec![0x46, 0x50, 0x40]);
}
#[test]
#[should_panic(expected = r#"assertion `left == right` failed: yikes
left: 0xff
right: 0x0"#)]
fn test_eq_more() {
assert_eq_hex!(0xff, 0x00, "yikes");
}
#[test]
#[should_panic(expected = r#"assertion `left != right` failed
left: 0x50
right: 0x50"#)]
fn test_ne_0() {
assert_ne_hex!(0x50, 0x50);
}
#[test]
#[should_panic(expected = r#"assertion `left != right` failed
left: 0xff
right: 0xff"#)]
fn test_ne_1() {
assert_ne_hex!(0xff, 0xff);
}
#[test]
#[should_panic(expected = r#"assertion `left != right` failed: yikes
left: 0xff
right: 0xff"#)]
fn test_ne_more() {
assert_ne_hex!(0xff, 0xff, "yikes");
}
}