aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2012-12-18 19:56:56 +0000
committerDaniel Jasper <djasper@google.com>2012-12-18 19:56:56 +0000
commite35ec2b10c2a0d53ae76a7a6c383fa6aaf7645bd (patch)
treee9bce4f815d5ca4d528ea13b813f47fa409abd57
parenta34173e6783f8334b3a120131adba7d3f6c6509f (diff)
Make the format scrambler understand line comments.
This allows for writing tests including line comments easier and more readable. We will need more of those tests in the future and also line comments are useful to force line breaks in tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170446 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--unittests/Format/FormatTest.cpp66
1 files changed, 41 insertions, 25 deletions
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index bcac37c007..fef56caee7 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -40,22 +40,35 @@ protected:
return format(Code, 0, Code.size(), Style);
}
- void verifyFormat(llvm::StringRef Code) {
- std::string WithoutFormat(Code.str());
- for (unsigned i = 0, e = WithoutFormat.size(); i != e; ++i) {
- if (WithoutFormat[i] == '\n')
- WithoutFormat[i] = ' ';
+ std::string messUp(llvm::StringRef Code) {
+ std::string MessedUp(Code.str());
+ bool InComment = false;
+ bool JustReplacedNewline = false;
+ for (unsigned i = 0, e = MessedUp.size() - 1; i != e; ++i) {
+ if (MessedUp[i] == '/' && MessedUp[i + 1] == '/') {
+ if (JustReplacedNewline)
+ MessedUp[i - 1] = '\n';
+ InComment = true;
+ } else if (MessedUp[i] != ' ') {
+ JustReplacedNewline = false;
+ } else if (MessedUp[i] == '\n') {
+ if (InComment) {
+ InComment = false;
+ } else {
+ JustReplacedNewline = true;
+ MessedUp[i] = ' ';
+ }
+ }
}
- EXPECT_EQ(Code.str(), format(WithoutFormat));
+ return MessedUp;
+ }
+
+ void verifyFormat(llvm::StringRef Code) {
+ EXPECT_EQ(Code.str(), format(messUp(Code)));
}
void verifyGoogleFormat(llvm::StringRef Code) {
- std::string WithoutFormat(Code.str());
- for (unsigned i = 0, e = WithoutFormat.size(); i != e; ++i) {
- if (WithoutFormat[i] == '\n')
- WithoutFormat[i] = ' ';
- }
- EXPECT_EQ(Code.str(), format(WithoutFormat, getGoogleStyle()));
+ EXPECT_EQ(Code.str(), format(messUp(Code), getGoogleStyle()));
}
};
@@ -96,7 +109,9 @@ TEST_F(FormatTest, FormatIfWithoutCompountStatement) {
verifyFormat("if (true)\n f();\ng();");
verifyFormat("if (a)\n if (b)\n if (c)\n g();\nh();");
verifyFormat("if (a)\n if (b) {\n f();\n }\ng();");
- EXPECT_EQ("if (a)\n // comment\n f();", format("if(a)\n// comment\nf();"));
+ verifyFormat("if (a)\n"
+ " // comment\n"
+ " f();");
}
TEST_F(FormatTest, ParseIfElse) {
@@ -236,21 +251,22 @@ TEST_F(FormatTest, FormatsLabels) {
//===----------------------------------------------------------------------===//
TEST_F(FormatTest, UnderstandsSingleLineComments) {
- EXPECT_EQ("// line 1\n// line 2\nvoid f() {\n}\n",
- format("// line 1\n// line 2\nvoid f() {}\n"));
+ verifyFormat("// line 1\n"
+ "// line 2\n"
+ "void f() {\n}\n");
- EXPECT_EQ("void f() {\n // Doesn't do anything\n}",
- format("void f() {\n// Doesn't do anything\n}"));
+ verifyFormat("void f() {\n"
+ " // Doesn't do anything\n"
+ "}");
- EXPECT_EQ("int i // This is a fancy variable\n = 5;",
- format("int i // This is a fancy variable\n= 5;"));
+ verifyFormat("int i // This is a fancy variable\n"
+ " = 5;");
- EXPECT_EQ("enum E {\n"
- " // comment\n"
- " VAL_A, // comment\n"
- " VAL_B\n"
- "};",
- format("enum E{\n// comment\nVAL_A,// comment\nVAL_B};"));
+ verifyFormat("enum E {\n"
+ " // comment\n"
+ " VAL_A, // comment\n"
+ " VAL_B\n"
+ "};");
verifyFormat(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =\n"