Add integration tests for line comment continuation

This commit is contained in:
Michael Davis 2024-10-31 12:08:15 -04:00 committed by Blaž Hrastnik
parent 1e6fe00001
commit fd3e889927

View File

@ -51,3 +51,71 @@ async fn insert_newline_trim_trailing_whitespace() -> anyhow::Result<()> {
Ok(())
}
#[tokio::test(flavor = "multi_thread")]
async fn insert_newline_continue_line_comment() -> anyhow::Result<()> {
// `insert_newline` continues a single line comment
test((
indoc! {"\
// Hello world!#[|
]#
"},
":lang rust<ret>i<ret>",
indoc! {"\
// Hello world!
// #[|
]#
"},
))
.await?;
// The comment is not continued if the cursor is before the comment token. (Note that we
// are entering insert-mode with `I`.)
test((
indoc! {"\
// Hello world!#[|
]#
"},
":lang rust<ret>I<ret>",
indoc! {"\
\n#[/|]#/ Hello world!
"},
))
.await?;
// `insert_newline` again clears the whitespace on the first continued comment and continues
// the comment again.
test((
indoc! {"\
// Hello world!
// #[|
]#
"},
":lang rust<ret>i<ret>",
indoc! {"\
// Hello world!
//
// #[|
]#
"},
))
.await?;
// Line comment continuation and trailing whitespace is also trimmed when using
// `insert_newline` in the middle of a comment.
test((
indoc! {"\
//·hello····#[|·]#····world
"}
.replace('·', " "),
":lang rust<ret>i<ret>",
indoc! {"\
//·hello
//·#[|·]#····world
"}
.replace('·', " "),
))
.await?;
Ok(())
}