assertables/assert_fn_ok/mod.rs
1//! Assert for comparing functions that return Result::Ok.
2//!
3//! These macros help compare functions that return results that are ok, such as
4//! `::std::Result::Ok` or similar.
5//!
6//! The macros use these capabilities:
7//!
8//! * implements `.is_ok() -> bool`
9//!
10//! * implements `.unwrap_ok() -> comparable`
11//!
12//! Compare a function Ok() with another function Ok():
13//!
14//! * [`assert_fn_ok_eq!(a_function, b_function)`](macro@crate::assert_fn_ok_eq) ≈ a_function().unwrap_err() = b_function().unwrap_err()
15//! * [`assert_fn_ok_ne!(a_function, b_function)`](macro@crate::assert_fn_ok_ne) ≈ a_function().unwrap_err() ≠ b_function().unwrap_err()
16//! * [`assert_fn_ok_ge!(a_function, b_function)`](macro@crate::assert_fn_ok_ge) ≈ a_function().unwrap_err() ≥ b_function().unwrap_err()
17//! * [`assert_fn_ok_gt!(a_function, b_function)`](macro@crate::assert_fn_ok_gt) ≈ a_function().unwrap_err() > b_function().unwrap_err()
18//! * [`assert_fn_ok_le!(a_function, b_function)`](macro@crate::assert_fn_ok_le) ≈ a_function().unwrap_err() ≤ b_function().unwrap_err()
19//! * [`assert_fn_ok_lt!(a_function, b_function)`](macro@crate::assert_fn_ok_lt) ≈ a_function().unwrap_err() < b_function().unwrap_err()
20//!
21//! Compare a function Ok() with an expression:
22//!
23//! * [`assert_fn_ok_eq_x!(function, expr)`](macro@crate::assert_fn_ok_eq_x) ≈ function().unwrap_err() = expr
24//! * [`assert_fn_ok_ne_x!(function, expr)`](macro@crate::assert_fn_ok_ne_x) ≈ function().unwrap_err() ≠ expr
25//! * [`assert_fn_ok_ge_x!(function, expr)`](macro@crate::assert_fn_ok_ge_x) ≈ function().unwrap_err() ≥ expr
26//! * [`assert_fn_ok_gt_x!(function, expr)`](macro@crate::assert_fn_ok_gt_x) ≈ function().unwrap_err() > expr
27//! * [`assert_fn_ok_le_x!(function, expr)`](macro@crate::assert_fn_ok_le_x) ≈ function().unwrap_err() ≤ expr
28//! * [`assert_fn_ok_lt_x!(function, expr)`](macro@crate::assert_fn_ok_lt_x) ≈ function().unwrap_err() < expr
29//!
30//! # Example
31//!
32//! ```rust
33//! use assertables::*;
34//! fn f(i: i8) -> Result<String, String> {
35//! match i {
36//! 0..=9 => Ok(format!("{}", i)),
37//! _ => Err(format!("{:?} is out of range", i)),
38//! }
39//! }
40//!
41//! let a: i8 = 1;
42//! let b: i8 = 1;
43//! assert_fn_ok_eq!(f, a, f, b);
44//! ```
45
46// Compare another
47pub mod assert_fn_ok_eq;
48pub mod assert_fn_ok_ge;
49pub mod assert_fn_ok_gt;
50pub mod assert_fn_ok_le;
51pub mod assert_fn_ok_lt;
52pub mod assert_fn_ok_ne;
53
54// Compare expression
55pub mod assert_fn_ok_eq_x;
56pub mod assert_fn_ok_ge_x;
57pub mod assert_fn_ok_gt_x;
58pub mod assert_fn_ok_le_x;
59pub mod assert_fn_ok_lt_x;
60pub mod assert_fn_ok_ne_x;