summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/unittests/FormattedStringTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clangd/unittests/FormattedStringTests.cpp')
-rw-r--r--clang-tools-extra/clangd/unittests/FormattedStringTests.cpp67
1 files changed, 65 insertions, 2 deletions
diff --git a/clang-tools-extra/clangd/unittests/FormattedStringTests.cpp b/clang-tools-extra/clangd/unittests/FormattedStringTests.cpp
index 39f5c64a381..7d57be61f0b 100644
--- a/clang-tools-extra/clangd/unittests/FormattedStringTests.cpp
+++ b/clang-tools-extra/clangd/unittests/FormattedStringTests.cpp
@@ -54,6 +54,28 @@ TEST(Render, Escaping) {
P = Paragraph();
P.appendCode("`foo`");
EXPECT_EQ(P.asMarkdown(), "` ``foo`` `");
+
+ // Code blocks might need more than 3 backticks.
+ Document D;
+ D.addCodeBlock("foobarbaz `\nqux");
+ EXPECT_EQ(D.asMarkdown(), "```cpp\n"
+ "foobarbaz `\nqux\n"
+ "```");
+ D = Document();
+ D.addCodeBlock("foobarbaz ``\nqux");
+ EXPECT_THAT(D.asMarkdown(), "```cpp\n"
+ "foobarbaz ``\nqux\n"
+ "```");
+ D = Document();
+ D.addCodeBlock("foobarbaz ```\nqux");
+ EXPECT_EQ(D.asMarkdown(), "````cpp\n"
+ "foobarbaz ```\nqux\n"
+ "````");
+ D = Document();
+ D.addCodeBlock("foobarbaz ` `` ``` ```` `\nqux");
+ EXPECT_EQ(D.asMarkdown(), "`````cpp\n"
+ "foobarbaz ` `` ``` ```` `\nqux\n"
+ "`````");
}
TEST(Paragraph, SeparationOfChunks) {
@@ -96,9 +118,18 @@ TEST(Paragraph, NewLines) {
TEST(Document, Separators) {
Document D;
D.addParagraph().appendText("foo");
+ D.addCodeBlock("test");
D.addParagraph().appendText("bar");
- EXPECT_EQ(D.asMarkdown(), "foo\nbar");
- EXPECT_EQ(D.asPlainText(), "foo\nbar");
+ EXPECT_EQ(D.asMarkdown(), R"md(foo
+```cpp
+test
+```
+bar)md");
+ EXPECT_EQ(D.asPlainText(), R"pt(foo
+
+test
+
+bar)pt");
}
TEST(Document, Spacer) {
@@ -110,6 +141,38 @@ TEST(Document, Spacer) {
EXPECT_EQ(D.asPlainText(), "foo\n\nbar");
}
+TEST(CodeBlock, Render) {
+ Document D;
+ // Code blocks preserves any extra spaces.
+ D.addCodeBlock("foo\n bar\n baz");
+ EXPECT_EQ(D.asMarkdown(), R"md(```cpp
+foo
+ bar
+ baz
+```)md");
+ EXPECT_EQ(D.asPlainText(), R"pt(foo
+ bar
+ baz)pt");
+ D.addCodeBlock("foo");
+ EXPECT_EQ(D.asMarkdown(), R"md(```cpp
+foo
+ bar
+ baz
+```
+```cpp
+foo
+```)md");
+ // FIXME: we shouldn't have 2 empty lines in between. A solution might be
+ // having a `verticalMargin` method for blocks, and let container insert new
+ // lines according to that before/after blocks.
+ EXPECT_EQ(D.asPlainText(), R"pt(foo
+ bar
+ baz
+
+
+foo)pt");
+}
+
} // namespace
} // namespace markup
} // namespace clangd
OpenPOWER on IntegriCloud