1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
use crate::{implementation, BasicAsserter};
impl<AssertedType> BasicAsserter<AssertedType>
where
AssertedType: PartialEq + std::fmt::Debug,
{
/// Asserts that the assertable is *not* equal to the expected value.
///
/// This is done by transforming the expected-value to a instance of `AssertedType` by using the [`TryInto`]-trait
/// and then comparing both values with [`PartialEq`]
///
/// # Examples
/// ```
/// # use smoothy::assert_that;
/// #
/// assert_that(42u8).try_into_not_equals(100i8);
/// ```
///
/// # Panics
/// When the transformation fails or the values are matching according to [`PartialEq`]
pub fn try_into_not_equals<T>(self, expected: T)
where
T: TryInto<AssertedType>,
<T as TryInto<AssertedType>>::Error: std::fmt::Debug,
{
let conversion_result: Result<AssertedType, _> = expected.try_into();
implementation::assert(
conversion_result.is_ok(),
"TryInto conversion succeeds",
&conversion_result,
);
#[allow(clippy::unwrap_used)]
let expected = conversion_result.unwrap();
implementation::assert_not_equals(self.value, expected);
}
}