use sdml::model::parse::parse_file; use std::fs::read_to_string; macro_rules! test_example { ($fnname: ident, $exname: literal) => { #[test] fn $fnname() { let input = format!("tests/examples/{}.sdm", $exname); let module = parse_file(input); if let Err(e) = module { panic!("parse error: {}", e); } let module = module.unwrap(); let module_as_string = format!("{:#?}\n", module); let expected = format!("tests/examples/{}.ron", $exname); let expected_string = read_to_string(expected); if let Err(e) = expected_string { panic!("io error: {}", e); } pretty_assertions::assert_eq!(module_as_string, expected_string.unwrap()); } }; } test_example!(test_module_annotations, "module_annotations"); test_example!(test_module_empty, "module_empty"); test_example!( test_module_empty_with_comments, "module_empty_with_comments" ); test_example!(test_module_with_underscore, "module_with_underscore"); test_example!(test_annotation_single_boolean, "annotation_single_boolean"); test_example!( test_annotation_single_constructor, "annotation_single_constructor" ); test_example!(test_annotation_single_decimal, "annotation_single_decimal"); test_example!(test_annotation_single_double, "annotation_single_double"); test_example!(test_annotation_single_integer, "annotation_single_integer"); test_example!(test_annotation_single_iri, "annotation_single_iri"); test_example!( test_annotation_single_language_string, "annotation_single_language_string" ); test_example!(test_annotation_single_string, "annotation_single_string"); test_example!( test_annotation_multiple_decimal, "annotation_multiple_decimal" ); test_example!( test_annotation_multiple_double, "annotation_multiple_double" ); test_example!( test_annotation_multiple_integer, "annotation_multiple_integer" ); test_example!(test_annotation_multiple_iri, "annotation_multiple_iri"); test_example!( test_annotation_multiple_language_string, "annotation_multiple_language_string" ); test_example!( test_annotation_multiple_string, "annotation_multiple_string" ); test_example!( test_annotation_multiple_separate, "annotation_multiple_separate" ); test_example!(test_import_member_only, "import_member_only"); test_example!(test_import_module_only, "import_module_only"); test_example!(test_import_multiple_mixed, "import_multiple_mixed"); test_example!(test_import_multiple_modules, "import_multiple_modules"); test_example!(test_datatype_empty, "datatype_empty"); test_example!(test_entity_empty, "entity_empty"); test_example!(test_entity_with_diff_members, "entity_with_diff_members"); test_example!(test_entity_with_groups, "entity_with_groups"); test_example!(test_entity_with_members, "entity_with_members"); test_example!(test_entity_with_unknowns, "entity_with_unknowns"); test_example!(test_enum_empty, "enum_empty"); test_example!(test_enum_variants, "enum_variants"); test_example!(test_event_empty, "event_empty"); test_example!(test_structure_empty, "structure_empty"); test_example!(test_union_empty, "union_empty"); test_example!(test_union_rename_variant, "union_rename_variant"); test_example!(test_union_variants, "union_variants");