3 use crate::clean::collapse_doc_fragments;
5 use rustc_span::create_default_session_globals_then;
6 use rustc_span::source_map::DUMMY_SP;
7 use rustc_span::symbol::Symbol;
9 fn create_doc_fragment(s: &str) -> Vec<DocFragment> {
13 doc: Symbol::intern(s),
14 kind: DocFragmentKind::SugaredDoc,
20 fn run_test(input: &str, expected: &str) {
21 create_default_session_globals_then(|| {
22 let mut s = create_doc_fragment(input);
23 unindent_doc_fragments(&mut s);
24 assert_eq!(collapse_doc_fragments(&s), expected);
29 fn should_unindent() {
30 run_test(" line1\n line2", "line1\nline2");
34 fn should_unindent_multiple_paragraphs() {
35 run_test(" line1\n\n line2", "line1\n\nline2");
39 fn should_leave_multiple_indent_levels() {
40 // Line 2 is indented another level beyond the
41 // base indentation and should be preserved
42 run_test(" line1\n\n line2", "line1\n\n line2");
46 fn should_ignore_first_line_indent() {
47 run_test("line1\n line2", "line1\n line2");
51 fn should_not_ignore_first_line_indent_in_a_single_line_para() {
52 run_test("line1\n\n line2", "line1\n\n line2");
56 fn should_unindent_tabs() {
57 run_test("\tline1\n\tline2", "line1\nline2");
61 fn should_trim_mixed_indentation() {
62 run_test("\t line1\n\t line2", "line1\nline2");
63 run_test(" \tline1\n \tline2", "line1\nline2");
67 fn should_not_trim() {
68 run_test("\t line1 \n\t line2", "line1 \nline2");
69 run_test(" \tline1 \n \tline2", "line1 \nline2");