]> git.proxmox.com Git - rustc.git/blob - src/librustdoc/passes/unindent_comments/tests.rs
New upstream version 1.55.0+dfsg1
[rustc.git] / src / librustdoc / passes / unindent_comments / tests.rs
1 use super::*;
2 use rustc_span::create_default_session_globals_then;
3 use rustc_span::source_map::DUMMY_SP;
4 use rustc_span::symbol::Symbol;
5
6 fn create_doc_fragment(s: &str) -> Vec<DocFragment> {
7 vec![DocFragment {
8 line: 0,
9 span: DUMMY_SP,
10 parent_module: None,
11 doc: Symbol::intern(s),
12 kind: DocFragmentKind::SugaredDoc,
13 need_backline: false,
14 indent: 0,
15 }]
16 }
17
18 #[track_caller]
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);
24 });
25 }
26
27 #[test]
28 fn should_unindent() {
29 run_test(" line1\n line2", "line1\nline2");
30 }
31
32 #[test]
33 fn should_unindent_multiple_paragraphs() {
34 run_test(" line1\n\n line2", "line1\n\nline2");
35 }
36
37 #[test]
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");
42 }
43
44 #[test]
45 fn should_ignore_first_line_indent() {
46 run_test("line1\n line2", "line1\n line2");
47 }
48
49 #[test]
50 fn should_not_ignore_first_line_indent_in_a_single_line_para() {
51 run_test("line1\n\n line2", "line1\n\n line2");
52 }
53
54 #[test]
55 fn should_unindent_tabs() {
56 run_test("\tline1\n\tline2", "line1\nline2");
57 }
58
59 #[test]
60 fn should_trim_mixed_indentation() {
61 run_test("\t line1\n\t line2", "line1\nline2");
62 run_test(" \tline1\n \tline2", "line1\nline2");
63 }
64
65 #[test]
66 fn should_not_trim() {
67 run_test("\t line1 \n\t line2", "line1 \nline2");
68 run_test(" \tline1 \n \tline2", "line1 \nline2");
69 }