]> git.lizzy.rs Git - rust.git/blob - src/librustdoc/clean/types/tests.rs
Auto merge of #104571 - clubby789:remove-vec-rc-opt, r=the8472
[rust.git] / src / librustdoc / clean / types / tests.rs
1 use super::*;
2
3 use crate::clean::collapse_doc_fragments;
4
5 use rustc_span::create_default_session_globals_then;
6 use rustc_span::source_map::DUMMY_SP;
7 use rustc_span::symbol::Symbol;
8
9 fn create_doc_fragment(s: &str) -> Vec<DocFragment> {
10     vec![DocFragment {
11         span: DUMMY_SP,
12         parent_module: None,
13         doc: Symbol::intern(s),
14         kind: DocFragmentKind::SugaredDoc,
15         indent: 0,
16     }]
17 }
18
19 #[track_caller]
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);
25     });
26 }
27
28 #[test]
29 fn should_unindent() {
30     run_test("    line1\n    line2", "line1\nline2");
31 }
32
33 #[test]
34 fn should_unindent_multiple_paragraphs() {
35     run_test("    line1\n\n    line2", "line1\n\nline2");
36 }
37
38 #[test]
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");
43 }
44
45 #[test]
46 fn should_ignore_first_line_indent() {
47     run_test("line1\n    line2", "line1\n    line2");
48 }
49
50 #[test]
51 fn should_not_ignore_first_line_indent_in_a_single_line_para() {
52     run_test("line1\n\n    line2", "line1\n\n    line2");
53 }
54
55 #[test]
56 fn should_unindent_tabs() {
57     run_test("\tline1\n\tline2", "line1\nline2");
58 }
59
60 #[test]
61 fn should_trim_mixed_indentation() {
62     run_test("\t    line1\n\t    line2", "line1\nline2");
63     run_test("    \tline1\n    \tline2", "line1\nline2");
64 }
65
66 #[test]
67 fn should_not_trim() {
68     run_test("\t    line1  \n\t    line2", "line1  \nline2");
69     run_test("    \tline1  \n    \tline2", "line1  \nline2");
70 }