#[deprecated(note = "Please rename from `assert_result_ok_ne_as_result` to `assert_ok_ne_as_result` because more developers prefer the shorter name.")]
#[macro_export]
macro_rules! assert_result_ok_ne_as_result {
($a:expr, $b:expr $(,)?) => {{
match (&$a, &$b) {
(a, b) => {
match (a, b) {
(Ok(a_inner), Ok(b_inner)) => {
if a_inner != b_inner {
Ok(())
} else {
Err(format!(
concat!(
"assertion failed: `assert_result_ok_ne!(a, b)`\n",
"https://docs.rs/assertables/", env!("CARGO_PKG_VERSION"), "/assertables/macro.assert_result_ok_ne.html\n",
" a label: `{}`,\n",
" a debug: `{:?}`,\n",
" a inner: `{:?}`,\n",
" b label: `{}`,\n",
" b debug: `{:?}`,\n",
" b inner: `{:?}`"
),
stringify!($a),
a,
a_inner,
stringify!($b),
b,
b_inner
))
}
},
_ => {
Err(format!(
concat!(
"assertion failed: `assert_result_ok_ne!(a, b)`\n",
"https://docs.rs/assertables/", env!("CARGO_PKG_VERSION"), "/assertables/macro.assert_result_ok_ne.html\n",
" a label: `{}`,\n",
" a debug: `{:?}`,\n",
" b label: `{}`,\n",
" b debug: `{:?}`",
),
stringify!($a),
a,
stringify!($b),
b,
))
}
}
}
}
}};
}
#[cfg(test)]
mod tests {
#[test]
fn test_assert_result_ok_ne_as_result_x_success() {
let a: Result<i8, i8> = Ok(1);
let b: Result<i8, i8> = Ok(2);
let result = assert_result_ok_ne_as_result!(a, b);
assert_eq!(result, Ok(()));
}
#[test]
fn test_assert_result_ok_ne_as_result_x_failure_because_eq() {
let a: Result<i8, i8> = Ok(1);
let b: Result<i8, i8> = Ok(1);
let result = assert_result_ok_ne_as_result!(a, b);
assert!(result.is_err());
assert_eq!(
result.unwrap_err(),
concat!(
"assertion failed: `assert_result_ok_ne!(a, b)`\n",
"https://docs.rs/assertables/", env!("CARGO_PKG_VERSION"), "/assertables/macro.assert_result_ok_ne.html\n",
" a label: `a`,\n",
" a debug: `Ok(1)`,\n",
" a inner: `1`,\n",
" b label: `b`,\n",
" b debug: `Ok(1)`,\n",
" b inner: `1`",
)
);
}
#[test]
fn test_assert_result_ok_ne_as_result_x_failure_because_not_ok() {
let a: Result<i8, i8> = Ok(1);
let b: Result<i8, i8> = Err(1);
let result = assert_result_ok_ne_as_result!(a, b);
assert!(result.is_err());
assert_eq!(
result.unwrap_err(),
concat!(
"assertion failed: `assert_result_ok_ne!(a, b)`\n",
"https://docs.rs/assertables/", env!("CARGO_PKG_VERSION"), "/assertables/macro.assert_result_ok_ne.html\n",
" a label: `a`,\n",
" a debug: `Ok(1)`,\n",
" b label: `b`,\n",
" b debug: `Err(1)`",
)
);
}
}
#[deprecated(note = "Please rename from `assert_result_ok_ne` to `assert_ok_ne` because more developers prefer the shorter name.")]
#[macro_export]
macro_rules! assert_result_ok_ne {
($a:expr, $b:expr $(,)?) => {{
match $crate::assert_result_ok_ne_as_result!($a, $b) {
Ok(()) => (),
Err(err) => panic!("{}", err),
}
}};
($a:expr, $b:expr, $($message:tt)+) => {{
match $crate::assert_result_ok_ne_as_result!($a, $b) {
Ok(()) => (),
Err(_err) => panic!("{}", $($message)+),
}
}};
}
#[deprecated(note = "Please rename from `debug_assert_result_ok_ne` to `debug_result_ok_ne` because more developers prefer the shorter name.")]
#[macro_export]
macro_rules! debug_assert_result_ok_ne {
($($arg:tt)*) => {
if $crate::cfg!(debug_assertions) {
$crate::assert_result_ok_ne!($($arg)*);
}
};
}