seferize_core 1.4.7

Core of the proc-macro seferize.
Documentation
mod utilities_for_test;

#[allow(unused)]
use crate::*;
use rstest::rstest;

#[cfg(test)]use pretty_assertions as pa;

#[rstest]
#[case::struture(ORIGINAL_STRUCT_MOD_SAMPLE, EXPECTED_STRUCT_MOD_SAMPLE, "MY_STRUCT")]
#[case::tuple(ORIGINAL_TUPLE_MOD_SAMPLE, EXPECTED_TUPLE_MOD_SAMPLE, "MY_TUPLE")]
#[case::implementation_with_ignore(
    ORIGINAL_IMPL_STRUCT_MOD_SAMPLE_WITH_IGNORE,
    EXPECTED_IMPL_STRUCT_MOD_SAMPLE_WITH_IGNORE,
    "IMPL_STRUCT_WITH_IGNORE"
)]
#[case::enumerate(
    ORIGINAL_ENUMERATE_MOD_SAMPLE,
    EXPECTED_ENUMERATE_MOD_SAMPLE,
    "MY_ENUMERATE"
)]
#[case::implementation(
    ORIGINAL_IMPL_STRUCT_MOD_SAMPLE,
    EXPECTED_IMPL_STRUCT_MOD_SAMPLE,
    "IMPL_STRUCT"
)]

#[case::module_with_ignore(
    ORIGINAL_MODULE_MOD_SAMPLE_WITH_IGNORE,
    EXPECTED_MODULE_MOD_SAMPLE_WITH_IGNORE,
    "MODULE_WITH_IGNORE"
)]
#[case::extract_struct_into(
    ORIGINAL_EXTRACT_STRUCT_MOD_SAMPLE,
    EXPECTED_EXTRACT_STRUCT_MOD_SAMPLE,
    "EXTRACT_STRUCT"
)]
#[case::extract_enumerate_with_into(
    ORIGINAL_EXTRACT_ENUMERATE_MOD_SAMPLE,
    EXPECTED_EXTRACT_ENUMERATE_MOD_SAMPLE,
    "EXTRACT_ENUMERATE_MOD_SAMPLE_WITH_VAR"
)]
#[case::extract_implamentation_with_into(
    ORIGINAL_EXTRACT_IMPL_STRUCT_MOD_SAMPLE,
    EXPECTED_EXTRACT_IMPL_STRUCT_MOD_SAMPLE,
    "EXTRACT_IMPLAMENTATION_WITH_METHOD_NAME"
)]
fn check_stringify(
    #[case] original_struct_mod_str: &'static str,
    #[case] expected_struct_mod_str: &'static str,
    #[case] name_attr_str: &'static str,
) {
    use syn::parse_str;
    use utilities_for_test::*;

    let original: TokenStream =
        parse_str(&original_struct_mod_str.replace("#[cfg(false)]", "")).unwrap();

    let original: TokenStream = extract_content_from_module(&parse_quote!(#original)).unwrap();

    let expected: TokenStream =
        parse_str(&expected_struct_mod_str.replace("#[cfg(false)]", "")).unwrap();
    let expected = extract_content_from_module(&parse_quote!(#expected)).unwrap();

    let generated = stringify(name_attr_str.into(), original);

    pa::assert_eq!(
        generated.to_string().replace(" ", ""),
        expected.to_string().replace(" ", "")
    )
}

#[rstest]
#[case::simple_method(ORIGINAL_SIMPLE_METHOD, EXPECTED_SIMPLE_METHOD)]
fn check_expose_for_tests(
    #[case] original_method_str: &'static str,
    #[case] expected_method_str: &'static str,
) {
    use crate::tests::utilities_for_test::extract_content_from_module;

    let original_method: TokenStream = parse_str(&original_method_str).unwrap();
    let original_method: TokenStream = extract_content_from_module(&parse_quote!(#original_method)).unwrap();
    let expected_method: TokenStream = parse_str(&expected_method_str).unwrap();
    let expected_method: TokenStream = extract_content_from_module(&parse_quote!(#expected_method)).unwrap();

    let generate_method = expose_for_tests(TokenStream::new(), original_method);    

    pa::assert_eq!(generate_method.to_string(),expected_method.to_string())
}