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_some<R>(value: &Option<R>) -> AssertionResult
where
    R: Debug,
{
    if value.is_some() {
        Ok(())
    } else {
        let value = format!("{:?}", value).red().bold();
        Err(AssertionError {
            message: vec![format!("Expected {} to be Some", value)],
        })
    }
}

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

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

    #[test]
    fn test_be_some_ok() {
        assert_eq!(be_some(&Some(1)), Ok(()));
    }

    #[test]
    fn test_be_some_err() {
        set_override(false);
        assert_eq!(
            be_some(&(None as Option<u8>)),
            expected_err(vec!["Expected None to be Some"])
        );
    }

    #[test]
    fn test_be_none_ok() {
        assert_eq!(be_none(&(None as Option<u8>)), Ok(()));
    }

    #[test]
    fn test_be_none_err() {
        set_override(false);
        assert_eq!(
            be_none(&Some(1)),
            expected_err(vec!["Expected Some(1) to be None"])
        );
    }
}