use indoc::indoc; #[test] fn byte_string() { let indoc = indoc! {b" a \\b c" }; let expected = b"a\n\n \\b\nc"; assert_eq!(indoc, expected); } #[test] fn carriage_return() { // Every line in the string ends with \r\n let indoc = indoc! {" a \\b c" }; let expected = "a\n\n \\b\nc"; assert_eq!(indoc, expected); } #[test] fn trailing_comma() { let indoc = indoc! { " test ", }; let expected = "test\n"; assert_eq!(indoc, expected); } #[test] fn empty_string() { let indoc = indoc! {""}; let expected = ""; assert_eq!(indoc, expected); } #[test] fn joined_first_line() { let indoc = indoc! {"\ a" }; let expected = "a"; assert_eq!(indoc, expected); } #[test] fn joined_lines() { let indoc = indoc! {" a\ b c\ d e" }; let expected = "ab\ncd\ne"; assert_eq!(indoc, expected); } #[test] fn no_leading_newline() { let indoc = indoc! {"a b c"}; let expected = "a\nb\nc"; assert_eq!(indoc, expected); } #[test] fn one_line() { let indoc = indoc! {"a"}; let expected = "a"; assert_eq!(indoc, expected); } #[test] fn raw_byte_string() { let indoc = indoc! {br#" "a" \\b c"# }; let expected = b"\"a\"\n\n \\\\b\nc"; assert_eq!(indoc, expected); } #[test] fn raw_string() { let indoc = indoc! {r#" "a" \\b c"# }; let expected = "\"a\"\n\n \\\\b\nc"; assert_eq!(indoc, expected); } #[test] fn string() { let indoc = indoc! {" a \\b c" }; let expected = "a\n\n \\b\nc"; assert_eq!(indoc, expected); } #[test] fn string_trailing_newline() { let indoc = indoc! {" a \\b c "}; let expected = "a\n\n \\b\nc\n"; assert_eq!(indoc, expected); } #[test] fn trailing_whitespace() { let indoc = indoc! {" 2 below 0 below -2 below end" }; let expected = "2 below\n \n0 below\n\n-2 below\n\nend"; assert_eq!(indoc, expected); } #[test] fn indoc_as_format_string() { let s = format!(indoc! {"{}"}, true); assert_eq!(s, "true"); } #[test] fn test_metavariable() { macro_rules! indoc_wrapper { ($e:expr) => { indoc!($e) }; } let indoc = indoc_wrapper! {" macros, how do they work "}; let expected = "macros, how do they work\n"; assert_eq!(indoc, expected); }