2 use rustc_span
::create_default_session_globals_then
;
3 use rustc_span
::source_map
::DUMMY_SP
;
4 use rustc_span
::symbol
::Symbol
;
6 fn create_doc_fragment(s
: &str) -> Vec
<DocFragment
> {
11 doc
: Symbol
::intern(s
),
12 kind
: DocFragmentKind
::SugaredDoc
,
19 fn run_test(input
: &str, expected
: &str) {
20 create_default_session_globals_then(|| {
21 let mut s
= create_doc_fragment(input
);
22 unindent_fragments(&mut s
);
23 assert_eq
!(&s
.iter().collect
::<String
>(), expected
);
28 fn should_unindent() {
29 run_test(" line1\n line2", "line1\nline2");
33 fn should_unindent_multiple_paragraphs() {
34 run_test(" line1\n\n line2", "line1\n\nline2");
38 fn should_leave_multiple_indent_levels() {
39 // Line 2 is indented another level beyond the
40 // base indentation and should be preserved
41 run_test(" line1\n\n line2", "line1\n\n line2");
45 fn should_ignore_first_line_indent() {
46 run_test("line1\n line2", "line1\n line2");
50 fn should_not_ignore_first_line_indent_in_a_single_line_para() {
51 run_test("line1\n\n line2", "line1\n\n line2");
55 fn should_unindent_tabs() {
56 run_test("\tline1\n\tline2", "line1\nline2");
60 fn should_trim_mixed_indentation() {
61 run_test("\t line1\n\t line2", "line1\nline2");
62 run_test(" \tline1\n \tline2", "line1\nline2");
66 fn should_not_trim() {
67 run_test("\t line1 \n\t line2", "line1 \nline2");
68 run_test(" \tline1 \n \tline2", "line1 \nline2");