9 #include "clang/Basic/LLVM.h" 10 #include "llvm/ADT/StringRef.h" 12 #include "gmock/gmock.h" 13 #include "gtest/gtest.h" 19 TEST(FormattedString, Basic) {
21 EXPECT_EQ(S.renderAsPlainText(),
"");
22 EXPECT_EQ(S.renderAsMarkdown(),
"");
24 S.appendText(
"foobar ");
26 EXPECT_EQ(S.renderAsPlainText(),
"foobar baz");
27 EXPECT_EQ(S.renderAsMarkdown(),
"foobar baz");
29 S = FormattedString();
30 S.appendInlineCode(
"foobar");
31 EXPECT_EQ(S.renderAsPlainText(),
"foobar");
32 EXPECT_EQ(S.renderAsMarkdown(),
"`foobar`");
34 S = FormattedString();
35 S.appendCodeBlock(
"foobar");
36 EXPECT_EQ(S.renderAsPlainText(),
"foobar");
37 EXPECT_EQ(S.renderAsMarkdown(),
"```cpp\n" 42 TEST(FormattedString, CodeBlocks) {
44 S.appendCodeBlock(
"foobar");
45 S.appendCodeBlock(
"bazqux",
"javascript");
46 S.appendText(
"after");
48 std::string ExpectedText = R
"(foobar 53 EXPECT_EQ(S.renderAsPlainText(), ExpectedText); 54 std::string ExpectedMarkdown = R"md(```cpp 61 EXPECT_EQ(S.renderAsMarkdown(), ExpectedMarkdown); 63 S = FormattedString(); 64 S.appendInlineCode("foobar");
65 S.appendInlineCode(
"bazqux");
66 EXPECT_EQ(S.renderAsPlainText(),
"foobar bazqux");
67 EXPECT_EQ(S.renderAsMarkdown(),
"`foobar` `bazqux`");
69 S = FormattedString();
71 S.appendInlineCode(
"bar");
74 EXPECT_EQ(S.renderAsPlainText(),
"foo bar baz");
75 EXPECT_EQ(S.renderAsMarkdown(),
"foo `bar` baz");
78 TEST(FormattedString, Escaping) {
82 EXPECT_EQ(S.renderAsMarkdown(),
"\\*\\!\\`");
85 S = FormattedString();
86 std::string
Punctuation = R
"txt(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)txt"; 88 std::string EscapedPunctuation;
89 EscapedPunctuation.reserve(2 * Punctuation.size());
90 for (
char C : Punctuation)
91 EscapedPunctuation += std::string(
"\\") + C;
92 S.appendText(Punctuation);
93 EXPECT_EQ(S.renderAsMarkdown(), EscapedPunctuation);
96 S = FormattedString();
97 S.appendInlineCode(
"* foo !+ bar * baz");
98 EXPECT_EQ(S.renderAsMarkdown(),
"`* foo !+ bar * baz`");
99 S = FormattedString();
100 S.appendCodeBlock(
"#define FOO\n* foo !+ bar * baz");
101 EXPECT_EQ(S.renderAsMarkdown(),
"```cpp\n" 102 "#define FOO\n* foo !+ bar * baz\n" 106 S = FormattedString();
107 S.appendInlineCode(
"foo`bar`baz");
108 EXPECT_EQ(S.renderAsMarkdown(),
"`foo``bar``baz`");
110 S = FormattedString();
111 S.appendCodeBlock(
"foo`bar`baz");
112 EXPECT_EQ(S.renderAsMarkdown(),
"```cpp\n" 117 S = FormattedString();
118 S.appendInlineCode(
"`foo");
119 EXPECT_EQ(S.renderAsMarkdown(),
"` ``foo `");
120 S = FormattedString();
121 S.appendInlineCode(
"foo`");
122 EXPECT_EQ(S.renderAsMarkdown(),
"` foo`` `");
123 S = FormattedString();
124 S.appendInlineCode(
"`foo`");
125 EXPECT_EQ(S.renderAsMarkdown(),
"` ``foo`` `");
128 S = FormattedString();
129 S.appendInlineCode(
" foo ");
130 EXPECT_EQ(S.renderAsMarkdown(),
"` foo `");
131 S = FormattedString();
132 S.appendInlineCode(
"foo ");
133 EXPECT_EQ(S.renderAsMarkdown(),
"`foo `");
134 S = FormattedString();
135 S.appendInlineCode(
" foo");
136 EXPECT_EQ(S.renderAsMarkdown(),
"` foo`");
139 S = FormattedString();
140 S.appendCodeBlock(
"foobarbaz `\nqux");
141 EXPECT_EQ(S.renderAsMarkdown(),
"```cpp\n" 144 S = FormattedString();
145 S.appendCodeBlock(
"foobarbaz ``\nqux");
146 EXPECT_EQ(S.renderAsMarkdown(),
"```cpp\n" 147 "foobarbaz ``\nqux\n" 149 S = FormattedString();
150 S.appendCodeBlock(
"foobarbaz ```\nqux");
151 EXPECT_EQ(S.renderAsMarkdown(),
"````cpp\n" 152 "foobarbaz ```\nqux\n" 154 S = FormattedString();
155 S.appendCodeBlock(
"foobarbaz ` `` ``` ```` `\nqux");
156 EXPECT_EQ(S.renderAsMarkdown(),
"`````cpp\n" 157 "foobarbaz ` `` ``` ```` `\nqux\n" 161 TEST(FormattedString, MarkdownWhitespace) {
166 EXPECT_EQ(S.renderAsMarkdown(),
"foo bar");
168 S = FormattedString();
169 S.appendInlineCode(
"foo");
170 S.appendInlineCode(
"bar");
171 EXPECT_EQ(S.renderAsMarkdown(),
"`foo` `bar`");
174 S = FormattedString();
175 S.appendText(
"foo ");
176 S.appendInlineCode(
"bar");
177 EXPECT_EQ(S.renderAsMarkdown(),
"foo `bar`");
179 S = FormattedString();
180 S.appendText(
"foo\n");
181 S.appendInlineCode(
"bar");
182 EXPECT_EQ(S.renderAsMarkdown(),
"foo\n`bar`");
184 S = FormattedString();
185 S.appendInlineCode(
"foo");
186 S.appendText(
" bar");
187 EXPECT_EQ(S.renderAsMarkdown(),
"`foo` bar");
189 S = FormattedString();
191 S.appendCodeBlock(
"bar");
193 EXPECT_EQ(S.renderAsMarkdown(),
"foo\n```cpp\nbar\n```\nbaz");
TEST(BackgroundQueueTest, Priority)
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//