Skip to main content

test_helpers/
assertions_as_str.rs

1// assertions_as_str.rs : test_help-rs
2
3// As-str assertion macros
4
5/// Asserts that two values are equal when compared as strings ([`&str`]).
6///
7/// # Forms
8///
9/// * `assert_as_str_eq!(expected, actual)` — compares via
10///   [`crate::base_traits::AsStr::as_str`];
11/// * `assert_as_str_eq!(expected, actual, …)` — same, with a custom
12///   panic message (as for [`assert_eq!`]);
13///
14/// Operands must provide an `#as_str()` method — either inherently or via
15/// [`crate::base_traits::AsStr`].
16///
17/// # Examples
18///
19/// ```
20/// use test_helpers::assert_as_str_eq;
21///
22/// assert_as_str_eq!("abc", String::from("abc"));
23/// ```
24///
25/// # Panics
26///
27/// Panics when the string views are unequal (via [`assert_eq!`]).
28#[macro_export]
29macro_rules! assert_as_str_eq {
30    ($expected:expr, $actual:expr) => {
31        let expected_arg = &$expected;
32        let actual_arg = &$actual;
33
34        let expected = {
35            use $crate::base_traits::AsStr as _;
36
37            expected_arg.as_str()
38        };
39        let actual = {
40            use $crate::base_traits::AsStr as _;
41
42            actual_arg.as_str()
43        };
44
45        assert_eq!(expected, actual);
46    };
47
48    ($expected:expr, $actual:expr, $($arg:tt)+) => {
49        let expected_arg = &$expected;
50        let actual_arg = &$actual;
51
52        let expected = {
53            use $crate::base_traits::AsStr as _;
54
55            expected_arg.as_str()
56        };
57        let actual = {
58            use $crate::base_traits::AsStr as _;
59
60            actual_arg.as_str()
61        };
62
63        assert_eq!(expected, actual, $($arg)+);
64    };
65}
66
67/// Asserts that two values are not equal when compared as strings.
68///
69/// # Forms
70///
71/// * `assert_as_str_ne!(expected, actual)` — compares via
72///   [`crate::base_traits::AsStr::as_str`];
73/// * `assert_as_str_ne!(expected, actual, …)` — same, with a custom
74///   panic message (as for [`assert_ne!`]);
75///
76/// Operands must provide an `#as_str()` method — either inherently or via
77/// [`crate::base_traits::AsStr`].
78///
79/// # Examples
80///
81/// ```
82/// use test_helpers::assert_as_str_ne;
83///
84/// assert_as_str_ne!("abc", String::from("ABC"));
85/// ```
86///
87/// # Panics
88///
89/// Panics when the string views are equal (via [`assert_ne!`]).
90#[macro_export]
91macro_rules! assert_as_str_ne {
92    ($expected:expr, $actual:expr) => {
93        let expected_arg = &$expected;
94        let actual_arg = &$actual;
95
96        let expected = {
97            use $crate::base_traits::AsStr as _;
98
99            expected_arg.as_str()
100        };
101        let actual = {
102            use $crate::base_traits::AsStr as _;
103
104            actual_arg.as_str()
105        };
106
107        assert_ne!(expected, actual);
108    };
109
110    ($expected:expr, $actual:expr, $($arg:tt)+) => {
111        let expected_arg = &$expected;
112        let actual_arg = &$actual;
113
114        let expected = {
115            use $crate::base_traits::AsStr as _;
116
117            expected_arg.as_str()
118        };
119        let actual = {
120            use $crate::base_traits::AsStr as _;
121
122            actual_arg.as_str()
123        };
124
125        assert_ne!(expected, actual, $($arg)+);
126    };
127}
128
129
130// ///////////////////////////// end of file //////////////////////////// //