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 //////////////////////////// //