diff options
Diffstat (limited to 'vendor/annotate-snippets/tests/dl_from_snippet.rs')
-rw-r--r-- | vendor/annotate-snippets/tests/dl_from_snippet.rs | 407 |
1 files changed, 407 insertions, 0 deletions
diff --git a/vendor/annotate-snippets/tests/dl_from_snippet.rs b/vendor/annotate-snippets/tests/dl_from_snippet.rs new file mode 100644 index 000000000..0dcfcfa31 --- /dev/null +++ b/vendor/annotate-snippets/tests/dl_from_snippet.rs @@ -0,0 +1,407 @@ +use annotate_snippets::display_list::DisplayList; +use annotate_snippets::{display_list as dl, formatter::get_term_style, snippet}; + +#[test] +fn test_format_title() { + let input = snippet::Snippet { + title: Some(snippet::Annotation { + id: Some("E0001"), + label: Some("This is a title"), + annotation_type: snippet::AnnotationType::Error, + }), + footer: vec![], + slices: vec![], + opt: Default::default(), + }; + let output = dl::DisplayList { + body: vec![dl::DisplayLine::Raw(dl::DisplayRawLine::Annotation { + annotation: dl::Annotation { + annotation_type: dl::DisplayAnnotationType::Error, + id: Some("E0001"), + label: vec![dl::DisplayTextFragment { + content: "This is a title", + style: dl::DisplayTextStyle::Emphasis, + }], + }, + source_aligned: false, + continuation: false, + })], + stylesheet: get_term_style(input.opt.color), + anonymized_line_numbers: input.opt.anonymized_line_numbers, + margin: None, + }; + assert_eq!(dl::DisplayList::from(input), output); +} + +#[test] +fn test_format_slice() { + let line_1 = "This is line 1"; + let line_2 = "This is line 2"; + let source = vec![line_1, line_2].join("\n"); + let input = snippet::Snippet { + title: None, + footer: vec![], + slices: vec![snippet::Slice { + source: &source, + line_start: 5402, + origin: None, + annotations: vec![], + fold: false, + }], + opt: Default::default(), + }; + let output = dl::DisplayList { + body: vec![ + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + dl::DisplayLine::Source { + lineno: Some(5402), + inline_marks: vec![], + line: dl::DisplaySourceLine::Content { + text: line_1, + range: (0, line_1.len()), + }, + }, + dl::DisplayLine::Source { + lineno: Some(5403), + inline_marks: vec![], + line: dl::DisplaySourceLine::Content { + range: (line_1.len() + 1, source.len()), + text: line_2, + }, + }, + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + ], + stylesheet: get_term_style(input.opt.color), + anonymized_line_numbers: input.opt.anonymized_line_numbers, + margin: None, + }; + assert_eq!(dl::DisplayList::from(input), output); +} + +#[test] +fn test_format_slices_continuation() { + let src_0 = "This is slice 1"; + let src_0_len = src_0.len(); + let src_1 = "This is slice 2"; + let src_1_len = src_1.len(); + let input = snippet::Snippet { + title: None, + footer: vec![], + slices: vec![ + snippet::Slice { + source: src_0, + line_start: 5402, + origin: Some("file1.rs"), + annotations: vec![], + fold: false, + }, + snippet::Slice { + source: src_1, + line_start: 2, + origin: Some("file2.rs"), + annotations: vec![], + fold: false, + }, + ], + opt: Default::default(), + }; + let output = dl::DisplayList { + body: vec![ + dl::DisplayLine::Raw(dl::DisplayRawLine::Origin { + path: "file1.rs", + pos: None, + header_type: dl::DisplayHeaderType::Initial, + }), + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + dl::DisplayLine::Source { + lineno: Some(5402), + inline_marks: vec![], + line: dl::DisplaySourceLine::Content { + text: src_0, + range: (0, src_0_len), + }, + }, + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + dl::DisplayLine::Raw(dl::DisplayRawLine::Origin { + path: "file2.rs", + pos: None, + header_type: dl::DisplayHeaderType::Continuation, + }), + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + dl::DisplayLine::Source { + lineno: Some(2), + inline_marks: vec![], + line: dl::DisplaySourceLine::Content { + text: src_1, + range: (0, src_1_len), + }, + }, + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + ], + stylesheet: get_term_style(input.opt.color), + anonymized_line_numbers: input.opt.anonymized_line_numbers, + margin: None, + }; + assert_eq!(dl::DisplayList::from(input), output); +} + +#[test] +fn test_format_slice_annotation_standalone() { + let line_1 = "This is line 1"; + let line_2 = "This is line 2"; + let source = vec![line_1, line_2].join("\n"); + // In line 2 + let range = (22, 24); + let input = snippet::Snippet { + title: None, + footer: vec![], + slices: vec![snippet::Slice { + source: &source, + line_start: 5402, + origin: None, + annotations: vec![snippet::SourceAnnotation { + range, + label: "Test annotation", + annotation_type: snippet::AnnotationType::Info, + }], + fold: false, + }], + opt: Default::default(), + }; + let output = dl::DisplayList { + body: vec![ + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + dl::DisplayLine::Source { + lineno: Some(5402), + inline_marks: vec![], + line: dl::DisplaySourceLine::Content { + range: (0, line_1.len()), + text: line_1, + }, + }, + dl::DisplayLine::Source { + lineno: Some(5403), + inline_marks: vec![], + line: dl::DisplaySourceLine::Content { + range: (line_1.len() + 1, source.len()), + text: line_2, + }, + }, + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Annotation { + annotation: dl::Annotation { + annotation_type: dl::DisplayAnnotationType::Info, + id: None, + label: vec![dl::DisplayTextFragment { + content: "Test annotation", + style: dl::DisplayTextStyle::Regular, + }], + }, + range: (range.0 - (line_1.len() + 1), range.1 - (line_1.len() + 1)), + annotation_type: dl::DisplayAnnotationType::Info, + annotation_part: dl::DisplayAnnotationPart::Standalone, + }, + }, + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + ], + stylesheet: get_term_style(input.opt.color), + anonymized_line_numbers: input.opt.anonymized_line_numbers, + margin: None, + }; + assert_eq!(dl::DisplayList::from(input), output); +} + +#[test] +fn test_format_label() { + let input = snippet::Snippet { + title: None, + footer: vec![snippet::Annotation { + id: None, + label: Some("This __is__ a title"), + annotation_type: snippet::AnnotationType::Error, + }], + slices: vec![], + opt: Default::default(), + }; + let output = dl::DisplayList { + body: vec![dl::DisplayLine::Raw(dl::DisplayRawLine::Annotation { + annotation: dl::Annotation { + annotation_type: dl::DisplayAnnotationType::Error, + id: None, + label: vec![ + dl::DisplayTextFragment { + content: "This ", + style: dl::DisplayTextStyle::Regular, + }, + dl::DisplayTextFragment { + content: "is", + style: dl::DisplayTextStyle::Emphasis, + }, + dl::DisplayTextFragment { + content: " a title", + style: dl::DisplayTextStyle::Regular, + }, + ], + }, + source_aligned: true, + continuation: false, + })], + stylesheet: get_term_style(input.opt.color), + anonymized_line_numbers: input.opt.anonymized_line_numbers, + margin: None, + }; + assert_eq!(dl::DisplayList::from(input), output); +} + +#[test] +#[should_panic] +fn test_i26() { + let source = "short"; + let label = "label"; + let input = snippet::Snippet { + title: None, + footer: vec![], + slices: vec![snippet::Slice { + annotations: vec![snippet::SourceAnnotation { + range: (0, source.len() + 1), + label, + annotation_type: snippet::AnnotationType::Error, + }], + source, + line_start: 0, + origin: None, + fold: false, + }], + opt: Default::default(), + }; + + let _ = dl::DisplayList::from(input); +} + +#[test] +fn test_i_29() { + let snippets = snippet::Snippet { + title: Some(snippet::Annotation { + id: None, + label: Some("oops"), + annotation_type: snippet::AnnotationType::Error, + }), + footer: vec![], + slices: vec![snippet::Slice { + source: "First line\r\nSecond oops line", + line_start: 1, + origin: Some("<current file>"), + annotations: vec![snippet::SourceAnnotation { + range: (19, 23), + label: "oops", + annotation_type: snippet::AnnotationType::Error, + }], + fold: true, + }], + opt: Default::default(), + }; + + let expected = DisplayList { + body: vec![ + dl::DisplayLine::Raw(dl::DisplayRawLine::Annotation { + annotation: dl::Annotation { + annotation_type: dl::DisplayAnnotationType::Error, + id: None, + label: vec![dl::DisplayTextFragment { + content: "oops", + style: dl::DisplayTextStyle::Emphasis, + }], + }, + source_aligned: false, + continuation: false, + }), + dl::DisplayLine::Raw(dl::DisplayRawLine::Origin { + path: "<current file>", + pos: Some((2, 8)), + header_type: dl::DisplayHeaderType::Initial, + }), + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + dl::DisplayLine::Source { + lineno: Some(1), + inline_marks: vec![], + line: dl::DisplaySourceLine::Content { + text: "First line", + range: (0, 10), + }, + }, + dl::DisplayLine::Source { + lineno: Some(2), + inline_marks: vec![], + line: dl::DisplaySourceLine::Content { + text: "Second oops line", + range: (12, 28), + }, + }, + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Annotation { + annotation: dl::Annotation { + annotation_type: dl::DisplayAnnotationType::None, + id: None, + label: vec![dl::DisplayTextFragment { + content: "oops", + style: dl::DisplayTextStyle::Regular, + }], + }, + range: (7, 11), + annotation_type: dl::DisplayAnnotationType::Error, + annotation_part: dl::DisplayAnnotationPart::Standalone, + }, + }, + dl::DisplayLine::Source { + lineno: None, + inline_marks: vec![], + line: dl::DisplaySourceLine::Empty, + }, + ], + stylesheet: get_term_style(false), + anonymized_line_numbers: false, + margin: None, + }; + + assert_eq!(DisplayList::from(snippets), expected); +} |