lets_expect_assertions 0.5.2

lets_expect assertions. This crate is internal to the lets_expect crate and should not be used directly.
Documentation
use colored::Colorize;
use lets_expect_core::assertions::{
    assertion_error::AssertionError, assertion_result::AssertionResult,
};
use std::fmt::Debug;

pub fn be_ok<R, E>(value: &Result<R, E>) -> AssertionResult
where
    R: Debug,
    E: Debug,
{
    if value.is_ok() {
        Ok(())
    } else {
        let value = format!("{:?}", value).red().bold();
        Err(AssertionError {
            message: vec![format!("Expected {} to be Ok", value)],
        })
    }
}

pub fn be_err<R, E>(value: &Result<R, E>) -> AssertionResult
where
    R: Debug,
    E: Debug,
{
    if value.is_err() {
        Ok(())
    } else {
        let value = format!("{:?}", value).red().bold();
        Err(AssertionError {
            message: vec![format!("Expected {} to be Err", value)],
        })
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::expected_err::expected_err;
    use colored::control::set_override;

    #[test]
    fn test_be_ok_ok() {
        assert_eq!(be_ok(&(Ok(1) as Result<i32, i32>)), Ok(()));
    }

    #[test]
    fn test_be_ok_err() {
        set_override(false);
        assert_eq!(
            be_ok(&(Err(1) as Result<i32, i32>)),
            expected_err(vec!["Expected Err(1) to be Ok"])
        );
    }

    #[test]
    fn test_be_err_ok() {
        assert_eq!(be_err(&(Err(1) as Result<i32, i32>)), Ok(()));
    }

    #[test]
    fn test_be_err_err() {
        set_override(false);
        assert_eq!(
            be_err(&(Ok(1) as Result<i32, i32>)),
            expected_err(vec!["Expected Ok(1) to be Err"])
        );
    }
}