diff options
author | Alexander Kornienko <alexfh@google.com> | 2012-12-06 18:03:27 +0000 |
---|---|---|
committer | Alexander Kornienko <alexfh@google.com> | 2012-12-06 18:03:27 +0000 |
commit | 15757316d67cb7a854d53a0402d67ad58347600a (patch) | |
tree | fc3e055fa4fbe5539cab47209eb3840611a6a971 /unittests/Format/FormatTest.cpp | |
parent | 762661a077ffa73580d556a9dd149830662d972e (diff) |
Clang-format: IndentCaseLabels option, proper namespace handling
Summary: + tests arranged in groups, as their number is already quite large.
Reviewers: djasper, klimek
Reviewed By: djasper
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D185
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169520 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/Format/FormatTest.cpp')
-rw-r--r-- | unittests/Format/FormatTest.cpp | 289 |
1 files changed, 180 insertions, 109 deletions
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index c385e353d6..c8416cb352 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -59,6 +59,10 @@ protected: } }; +//===----------------------------------------------------------------------===// +// Basic function tests. +//===----------------------------------------------------------------------===// + TEST_F(FormatTest, DoesNotChangeCorrectlyFormatedCode) { EXPECT_EQ(";", format(";")); } @@ -78,48 +82,15 @@ TEST_F(FormatTest, FormatsNestedBlockStatements) { EXPECT_EQ("{\n {\n {\n }\n }\n}", format("{{{}}}")); } -TEST_F(FormatTest, FormatsForLoop) { - verifyFormat( - "for (int VeryVeryLongLoopVariable = 0; VeryVeryLongLoopVariable < 10;\n" - " ++VeryVeryLongLoopVariable)\n" - " ;"); - verifyFormat("for (;;)\n" - " f();"); - verifyFormat("for (;;) {\n" - "}"); - verifyFormat("for (;;) {\n" - " f();\n" - "}"); -} - -TEST_F(FormatTest, FormatsWhileLoop) { - verifyFormat("while (true) {\n}"); - verifyFormat("while (true)\n" - " f();"); - verifyFormat("while () {\n" - "}"); - verifyFormat("while () {\n" - " f();\n" - "}"); -} - TEST_F(FormatTest, FormatsNestedCall) { verifyFormat("Method(f1, f2(f3));"); verifyFormat("Method(f1(f2, f3()));"); } -TEST_F(FormatTest, FormatsAwesomeMethodCall) { - verifyFormat( - "SomeLongMethodName(SomeReallyLongMethod(CallOtherReallyLongMethod(\n" - " parameter, parameter, parameter)), SecondLongCall(parameter));"); -} -TEST_F(FormatTest, FormatsFunctionDefinition) { - verifyFormat("void f(int a, int b, int c, int d, int e, int f, int g," - " int h, int j, int f,\n" - " int c, int ddddddddddddd) {\n" - "}"); -} +//===----------------------------------------------------------------------===// +// Tests for control statements. +//===----------------------------------------------------------------------===// TEST_F(FormatTest, FormatIfWithoutCompountStatement) { verifyFormat("if (true)\n f();\ng();"); @@ -128,7 +99,7 @@ TEST_F(FormatTest, FormatIfWithoutCompountStatement) { EXPECT_EQ("if (a)\n // comment\n f();", format("if(a)\n// comment\nf();")); } -TEST_F(FormatTest, ParseIfThenElse) { +TEST_F(FormatTest, ParseIfElse) { verifyFormat("if (true)\n" " if (true)\n" " if (true)\n" @@ -154,30 +125,6 @@ TEST_F(FormatTest, ParseIfThenElse) { "}"); } -TEST_F(FormatTest, UnderstandsSingleLineComments) { - EXPECT_EQ("// line 1\n// line 2\nvoid f() {\n}\n", - format("// line 1\n// line 2\nvoid f() {}\n")); - - EXPECT_EQ("void f() {\n // Doesn't do anything\n}", - format("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("f(/*test=*/ true);"); -} - -TEST_F(FormatTest, DoesNotBreakSemiAfterClassDecl) { - verifyFormat("class A {\n};"); -} - -TEST_F(FormatTest, BreaksAsHighAsPossible) { - verifyFormat( - "if ((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaaaaaaaa) ||\n" - " (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb && bbbbbbbbbbbbbbbbbbbbbbbbbb))\n" - " f();"); -} - TEST_F(FormatTest, ElseIf) { verifyFormat("if (a) {\n" "} else if (b) {\n" @@ -190,24 +137,41 @@ TEST_F(FormatTest, ElseIf) { " h();"); } -TEST_F(FormatTest, UnderstandsAccessSpecifiers) { - verifyFormat("class A {\n" - "public:\n" - "protected:\n" - "private:\n" - " void f() {\n" - " }\n" - "};"); - verifyGoogleFormat("class A {\n" - " public:\n" - " protected:\n" - " private:\n" - " void f() {\n" - " }\n" - "};"); +TEST_F(FormatTest, FormatsForLoop) { + verifyFormat( + "for (int VeryVeryLongLoopVariable = 0; VeryVeryLongLoopVariable < 10;\n" + " ++VeryVeryLongLoopVariable)\n" + " ;"); + verifyFormat("for (;;)\n" + " f();"); + verifyFormat("for (;;) {\n" + "}"); + verifyFormat("for (;;) {\n" + " f();\n" + "}"); +} + +TEST_F(FormatTest, FormatsWhileLoop) { + verifyFormat("while (true) {\n}"); + verifyFormat("while (true)\n" + " f();"); + verifyFormat("while () {\n" + "}"); + verifyFormat("while () {\n" + " f();\n" + "}"); +} + +TEST_F(FormatTest, FormatsDoWhile) { + verifyFormat("do {\n" + " do_something();\n" + "} while (something());"); + verifyFormat("do\n" + " do_something();\n" + "while (something());"); } -TEST_F(FormatTest, SwitchStatement) { +TEST_F(FormatTest, FormatsSwitchStatement) { verifyFormat("switch (x) {\n" "case 1:\n" " f();\n" @@ -228,9 +192,29 @@ TEST_F(FormatTest, SwitchStatement) { "}"); verifyFormat("switch (test)\n" " ;"); + verifyGoogleFormat("switch (x) {\n" + " case 1:\n" + " f();\n" + " break;\n" + " case kFoo:\n" + " case ns::kBar:\n" + " case kBaz:\n" + " break;\n" + " default:\n" + " g();\n" + " break;\n" + "}"); + verifyGoogleFormat("switch (x) {\n" + " case 1: {\n" + " f();\n" + " break;\n" + " }\n" + "}"); + verifyGoogleFormat("switch (test)\n" + " ;"); } -TEST_F(FormatTest, Labels) { +TEST_F(FormatTest, FormatsLabels) { verifyFormat("void f() {\n" " some_code();\n" "test_label:\n" @@ -246,21 +230,56 @@ TEST_F(FormatTest, Labels) { "some_other_code();"); } -TEST_F(FormatTest, DerivedClass) { - verifyFormat("class A : public B {\n" + +//===----------------------------------------------------------------------===// +// Tests for comments. +//===----------------------------------------------------------------------===// + +TEST_F(FormatTest, UnderstandsSingleLineComments) { + EXPECT_EQ("// line 1\n// line 2\nvoid f() {\n}\n", + format("// line 1\n// line 2\nvoid f() {}\n")); + + EXPECT_EQ("void f() {\n // Doesn't do anything\n}", + format("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("f(/*test=*/ true);"); +} + + +//===----------------------------------------------------------------------===// +// Tests for classes, namespaces, etc. +//===----------------------------------------------------------------------===// + +TEST_F(FormatTest, DoesNotBreakSemiAfterClassDecl) { + verifyFormat("class A {\n};"); +} + +TEST_F(FormatTest, UnderstandsAccessSpecifiers) { + verifyFormat("class A {\n" + "public:\n" + "protected:\n" + "private:\n" + " void f() {\n" + " }\n" "};"); + verifyGoogleFormat("class A {\n" + " public:\n" + " protected:\n" + " private:\n" + " void f() {\n" + " }\n" + "};"); } -TEST_F(FormatTest, DoWhile) { - verifyFormat("do {\n" - " do_something();\n" - "} while (something());"); - verifyFormat("do\n" - " do_something();\n" - "while (something());"); +TEST_F(FormatTest, FormatsDerivedClass) { + verifyFormat("class A : public B {\n" + "};"); } -TEST_F(FormatTest, Enum) { +TEST_F(FormatTest, FormatsEnum) { verifyFormat("enum {\n" " Zero,\n" " One = 1,\n" @@ -275,6 +294,53 @@ TEST_F(FormatTest, Enum) { "};"); } +TEST_F(FormatTest, FormatsNamespaces) { + verifyFormat("namespace some_namespace {\n" + "class A {\n" + "};\n" + "void f() {\n" + " f();\n" + "}\n" + "}"); + verifyFormat("namespace {\n" + "class A {\n" + "};\n" + "void f() {\n" + " f();\n" + "}\n" + "}"); + verifyFormat("using namespace some_namespace;\n" + "class A {\n" + "};\n" + "void f() {\n" + " f();\n" + "}"); +} + +//===----------------------------------------------------------------------===// +// Line break tests. +//===----------------------------------------------------------------------===// + +TEST_F(FormatTest, FormatsFunctionDefinition) { + verifyFormat("void f(int a, int b, int c, int d, int e, int f, int g," + " int h, int j, int f,\n" + " int c, int ddddddddddddd) {\n" + "}"); +} + +TEST_F(FormatTest, FormatsAwesomeMethodCall) { + verifyFormat( + "SomeLongMethodName(SomeReallyLongMethod(CallOtherReallyLongMethod(\n" + " parameter, parameter, parameter)), SecondLongCall(parameter));"); +} + +TEST_F(FormatTest, BreaksAsHighAsPossible) { + verifyFormat( + "if ((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaaaaaaaa) ||\n" + " (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb && bbbbbbbbbbbbbbbbbbbbbbbbbb))\n" + " f();"); +} + TEST_F(FormatTest, BreaksDesireably) { verifyFormat("if (aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n" " aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n" @@ -315,6 +381,27 @@ TEST_F(FormatTest, AlignsStringLiterals) { " \"looooooooooooooooooooooooooooooooooooooooooooooooong literal\");"); } +TEST_F(FormatTest, AlignsPipes) { + verifyFormat( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" + " << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" + " << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;"); + verifyFormat( + "aaaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaa\n" + " << aaaaaaaaaaaaaaaaaaaa;"); + verifyFormat( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" + " << aaaaaaaaaaaaaaaaaaaaaaaaaaaa;"); + verifyFormat( + "llvm::outs() << \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n" + " \"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"\n" + " << \"ccccccccccccccccccccccccccccccccccccccccccccccccc\";"); + verifyFormat( + "aaaaaaaa << (aaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" + " << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n" + " << aaaaaaaaaaaaaaaaaaaaaaaaaaaaa;"); +} + TEST_F(FormatTest, UnderstandsEquals) { verifyFormat( "aaaaaaaaaaaaaaaaa =\n" @@ -401,6 +488,11 @@ TEST_F(FormatTest, HandlesIncludeDirectives) { EXPECT_EQ("#include \"string.h\"\n", format("#include \"string.h\"\n")); } + +//===----------------------------------------------------------------------===// +// Error recovery tests. +//===----------------------------------------------------------------------===// + //TEST_F(FormatTest, IncorrectDerivedClass) { // verifyFormat("public B {\n" // "};"); @@ -443,26 +535,5 @@ TEST_F(FormatTest, IncorrectCodeErrorDetection) { } -TEST_F(FormatTest, AlignsPipes) { - verifyFormat( - "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" - " << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" - " << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;"); - verifyFormat( - "aaaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaa\n" - " << aaaaaaaaaaaaaaaaaaaa;"); - verifyFormat( - "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" - " << aaaaaaaaaaaaaaaaaaaaaaaaaaaa;"); - verifyFormat( - "llvm::outs() << \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n" - " \"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"\n" - " << \"ccccccccccccccccccccccccccccccccccccccccccccccccc\";"); - verifyFormat( - "aaaaaaaa << (aaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" - " << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n" - " << aaaaaaaaaaaaaaaaaaaaaaaaaaaaa;"); -} - } // end namespace tooling } // end namespace clang |