Mercurial > hg > CbC > CbC_llvm
view clang/unittests/Format/BracesInserterTest.cpp @ 266:00f31e85ec16 default tip
Added tag current for changeset 31d058e83c98
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 14 Oct 2023 10:13:55 +0900 |
parents | 1f2b6ac9f198 |
children |
line wrap: on
line source
//===- unittest/Format/BracesInserterTest.cpp -----------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "FormatTestBase.h" #define DEBUG_TYPE "braces-inserter-test" namespace clang { namespace format { namespace test { namespace { class BracesInserterTest : public FormatTestBase {}; TEST_F(BracesInserterTest, InsertBraces) { FormatStyle Style = getLLVMStyle(); Style.InsertBraces = true; verifyFormat("// clang-format off\n" "// comment\n" "if (a) f();\n" "// clang-format on\n" "if (b) {\n" " g();\n" "}", "// clang-format off\n" "// comment\n" "if (a) f();\n" "// clang-format on\n" "if (b) g();", Style); verifyFormat("if (a) {\n" " switch (b) {\n" " case 1:\n" " c = 0;\n" " break;\n" " default:\n" " c = 1;\n" " }\n" "}", "if (a)\n" " switch (b) {\n" " case 1:\n" " c = 0;\n" " break;\n" " default:\n" " c = 1;\n" " }", Style); verifyFormat("for (auto node : nodes) {\n" " if (node) {\n" " break;\n" " }\n" "}", "for (auto node : nodes)\n" " if (node)\n" " break;", Style); verifyFormat("for (auto node : nodes) {\n" " if (node)\n" "}", "for (auto node : nodes)\n" " if (node)", Style); verifyFormat("do {\n" " --a;\n" "} while (a);", "do\n" " --a;\n" "while (a);", Style); verifyFormat("if (i) {\n" " ++i;\n" "} else {\n" " --i;\n" "}", "if (i)\n" " ++i;\n" "else {\n" " --i;\n" "}", Style); verifyFormat("void f() {\n" " while (j--) {\n" " while (i) {\n" " --i;\n" " }\n" " }\n" "}", "void f() {\n" " while (j--)\n" " while (i)\n" " --i;\n" "}", Style); verifyFormat("f({\n" " if (a) {\n" " g();\n" " }\n" "});", "f({\n" " if (a)\n" " g();\n" "});", Style); verifyFormat("if (a) {\n" " f();\n" "} else if (b) {\n" " g();\n" "} else {\n" " h();\n" "}", "if (a)\n" " f();\n" "else if (b)\n" " g();\n" "else\n" " h();", Style); verifyFormat("if (a) {\n" " f();\n" "}\n" "// comment\n" "/* comment */", "if (a)\n" " f();\n" "// comment\n" "/* comment */", Style); verifyFormat("if (a) {\n" " // foo\n" " // bar\n" " f();\n" "}", "if (a)\n" " // foo\n" " // bar\n" " f();", Style); verifyFormat("if (a) { //\n" " b = 1;\n" "}", "if (a) //\n" " b = 1;", Style); verifyFormat("if (a) { // comment\n" " // comment\n" " f();\n" "}", "if (a) // comment\n" " // comment\n" " f();", Style); verifyFormat("if (a) {\n" " f(); // comment\n" "}", "if (a)\n" " f(); // comment", Style); verifyFormat("if (a) {\n" " f();\n" "}\n" "#undef A\n" "#undef B", "if (a)\n" " f();\n" "#undef A\n" "#undef B", Style); verifyFormat("if (a)\n" "#ifdef A\n" " f();\n" "#else\n" " g();\n" "#endif", Style); verifyFormat("#if 0\n" "#elif 1\n" "#endif\n" "void f() {\n" " if (a) {\n" " g();\n" " }\n" "}", "#if 0\n" "#elif 1\n" "#endif\n" "void f() {\n" " if (a) g();\n" "}", Style); verifyFormat("do {\n" "#if 0\n" "#else\n" " if (b) {\n" "#endif\n" " }\n" "} while (0);", Style); Style.RemoveBracesLLVM = true; verifyFormat("if (a) //\n" " return b;", Style); Style.RemoveBracesLLVM = false; Style.ColumnLimit = 15; verifyFormat("#define A \\\n" " if (a) \\\n" " f();", Style); verifyFormat("if (a + b >\n" " c) {\n" " f();\n" "}", "if (a + b > c)\n" " f();", Style); Style.BreakBeforeBraces = FormatStyle::BS_Custom; Style.BraceWrapping.AfterControlStatement = FormatStyle::BWACS_Always; verifyFormat("if (a) //\n" "{\n" " b = 1;\n" "}", "if (a) //\n" " b = 1;", Style); } TEST_F(BracesInserterTest, InsertBracesRange) { FormatStyle Style = getLLVMStyle(); Style.InsertBraces = true; const StringRef Code("while (a)\n" " if (b)\n" " return;"); verifyFormat("while (a) {\n" " if (b)\n" " return;\n" "}", Code, Style, {tooling::Range(0, 9)}); // line 1 verifyFormat("while (a) {\n" " if (b) {\n" " return;\n" " }\n" "}", Code, Style, {tooling::Range(0, 18)}); // lines 1-2 verifyFormat("while (a)\n" " if (b) {\n" " return;\n" " }", Code, Style, {tooling::Range(10, 8)}); // line 2 verifyFormat(Code, Code, Style, {tooling::Range(19, 11)}); // line 3 } } // namespace } // namespace test } // namespace format } // namespace clang