fluent-asserter 0.1.9

A library write tests assertions with a fluent interface
Documentation
extern crate fluent_asserter;
use fluent_asserter::prelude::*;

mod string_asserter_tests {
    use super::*;

    #[test]
    fn test_is_equal_to_for_string() {
        assert_that!(&String::from("test string")).is_equal_to(&String::from("test string"));
        assert_that!(&String::from("bitcoin")).is_equal_to(&String::from("bitcoin"));

        assert_that_code!(
            || assert_that!(&String::from("test string")).is_equal_to(&String::from("test"))
        )
        .panics()
        .with_message(
            "Expected &String::from(\"test string\") to be \"test\", but was \"test string\".",
        );

        let string_var = String::from("bitcoin");
        assert_that_code!(|| assert_that!(&string_var).is_equal_to(&String::from("ethereum")))
            .panics()
            .with_message("Expected &string_var to be \"ethereum\", but was \"bitcoin\".");
    }

    #[test]
    fn test_is_equal_to_for_str() {
        assert_that!("test string").is_equal_to("test string");
        assert_that!("bitcoin").is_equal_to("bitcoin");

        assert_that_code!(|| assert_that!("test string").is_equal_to("string"))
            .panics()
            .with_message("Expected \"test string\" to be \"string\", but was \"test string\".");

        let string_var = "bitcoin";
        assert_that_code!(|| assert_that!(string_var).is_equal_to("ethereum"))
            .panics()
            .with_message("Expected string_var to be \"ethereum\", but was \"bitcoin\".");
    }

    #[test]
    fn test_string_contains() {
        assert_that!(&String::from("test string")).contains("st");
        assert_that!(&String::from("bitcoin")).contains("co");

        assert_that_code!(|| assert_that!(&String::from("test string")).contains("asd"))
            .panics()
            .with_message(
                "Expected &String::from(\"test string\") to contain 'asd', but it does not.",
            );

        let string_var = &String::from("bitcoin");
        assert_that_code!(|| assert_that!(string_var).contains("eth"))
            .panics()
            .with_message("Expected string_var to contain 'eth', but it does not.");
    }

    #[test]
    fn test_string_starts_with() {
        assert_that!(&String::from("test string")).starts_with("te");
        assert_that!(&String::from("bitcoin")).starts_with("bitcoin");

        assert_that_code!(|| assert_that!(&String::from("test string")).starts_with("asd"))
            .panics();

        let string_var = &String::from("bitcoin");
        assert_that_code!(|| assert_that!(string_var).starts_with("eth"))
            .panics()
            .with_message("Expected string_var to start with 'eth', but it does not.");
    }

    #[test]
    fn test_string_ends_with() {
        assert_that!(&String::from("test string")).ends_with("ng");
        assert_that!(&String::from("bitcoin")).ends_with("coin");

        assert_that_code!(|| assert_that!(&String::from("test string")).ends_with("asd")).panics();

        let string_var = &String::from("bitcoin");
        assert_that_code!(|| assert_that!(string_var).ends_with("eth"))
            .panics()
            .with_message("Expected string_var to end with 'eth', but it does not.");
    }

    #[test]
    fn test_string_is_empty() {
        assert_that!(&String::from("")).is_empty();
        assert_that!("").is_empty();

        let string_var = &String::from("test string");
        assert_that_code!(|| assert_that!(string_var).is_empty())
            .panics()
            .with_message("Expected string_var to be empty, but it is not.");
    }

    #[test]
    fn test_string_is_not_empty() {
        assert_that!(&String::from("test string")).is_not_empty();
        assert_that!("bitcoin").is_not_empty();

        let empty_string = &String::from("");
        assert_that_code!(|| assert_that!(empty_string).is_not_empty())
            .panics()
            .with_message("Expected empty_string to not be empty, but it is.");
    }

    #[test]
    fn test_has_length() {
        assert_that!(&String::from("bitcoin")).has_length(7);
        assert_that!("ethereum").has_length(8);

        let string_var = &String::from("test string");
        assert_that_code!(|| assert_that!(string_var).has_length(1))
            .panics()
            .with_message("Expected string_var to have length 1, but it has 11");
    }

    #[test]
    fn test_contains_all() {
        assert_that!("bitcoin ethereum solana").contains_all(&["ethereum", "bitcoin", "solana"]);

        let string_var = "bitcoin ethereum solana";
        assert_that_code!(|| assert_that!(string_var).contains_all(&["ethereum", "bitcoin", "solana", "polygon"]))
            .panics()
            .with_message("Expected string_var 'bitcoin ethereum solana' to contain the strings [\"ethereum\", \"bitcoin\", \"solana\", \"polygon\"], but it does not.");
    }

    #[test]
    fn test_contains_any() {
        assert_that!("bitcoin ethereum solana").contains_any(&["solana"]);

        let string_var = "bitcoin ethereum solana";
        assert_that_code!(|| assert_that!(string_var).contains_any(&["tezos", "litecoin", "luna"]))
            .panics()
            .with_message("Expected string_var 'bitcoin ethereum solana' to contain at least one of the strings [\"tezos\", \"litecoin\", \"luna\"], but it does not.");
    }

    #[test]
    fn test_that_error_message_contains_variable_name() {
        let code = || assert_that!("test1").is_equal_to("test2");

        assert_that_code!(code)
            .panics()
            .with_message("Expected \"test1\" to be \"test2\", but was \"test1\".");
    }

    #[test]
    fn test_that_error_message_contains_inline_value() {
        let string_var = "test1";
        let code = || assert_that!(string_var).is_equal_to("test2");

        assert_that_code!(code)
            .panics()
            .with_message("Expected string_var to be \"test2\", but was \"test1\".");
    }
}