brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.2 KiB · 572e53e Raw
290 lines · cpp
1//===- unittest/Format/BracesInserterTest.cpp -----------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "FormatTestBase.h"10 11#define DEBUG_TYPE "braces-inserter-test"12 13namespace clang {14namespace format {15namespace test {16namespace {17 18class BracesInserterTest : public FormatTestBase {};19 20TEST_F(BracesInserterTest, InsertBraces) {21  FormatStyle Style = getLLVMStyle();22  Style.InsertBraces = true;23 24  verifyFormat("// clang-format off\n"25               "// comment\n"26               "if (a) f();\n"27               "// clang-format on\n"28               "if (b) {\n"29               "  g();\n"30               "}",31               "// clang-format off\n"32               "// comment\n"33               "if (a) f();\n"34               "// clang-format on\n"35               "if (b) g();",36               Style);37 38  verifyFormat("if (a) {\n"39               "  switch (b) {\n"40               "  case 1:\n"41               "    c = 0;\n"42               "    break;\n"43               "  default:\n"44               "    c = 1;\n"45               "  }\n"46               "}",47               "if (a)\n"48               "  switch (b) {\n"49               "  case 1:\n"50               "    c = 0;\n"51               "    break;\n"52               "  default:\n"53               "    c = 1;\n"54               "  }",55               Style);56 57  verifyFormat("for (auto node : nodes) {\n"58               "  if (node) {\n"59               "    break;\n"60               "  }\n"61               "}",62               "for (auto node : nodes)\n"63               "  if (node)\n"64               "    break;",65               Style);66 67  verifyFormat("for (auto node : nodes) {\n"68               "  if (node)\n"69               "}",70               "for (auto node : nodes)\n"71               "  if (node)",72               Style);73 74  verifyFormat("do {\n"75               "  --a;\n"76               "} while (a);",77               "do\n"78               "  --a;\n"79               "while (a);",80               Style);81 82  verifyFormat("if (i) {\n"83               "  ++i;\n"84               "} else {\n"85               "  --i;\n"86               "}",87               "if (i)\n"88               "  ++i;\n"89               "else {\n"90               "  --i;\n"91               "}",92               Style);93 94  verifyFormat("void f() {\n"95               "  while (j--) {\n"96               "    while (i) {\n"97               "      --i;\n"98               "    }\n"99               "  }\n"100               "}",101               "void f() {\n"102               "  while (j--)\n"103               "    while (i)\n"104               "      --i;\n"105               "}",106               Style);107 108  verifyFormat("f({\n"109               "  if (a) {\n"110               "    g();\n"111               "  }\n"112               "});",113               "f({\n"114               "  if (a)\n"115               "    g();\n"116               "});",117               Style);118 119  verifyFormat("if (a) {\n"120               "  f();\n"121               "} else if (b) {\n"122               "  g();\n"123               "} else {\n"124               "  h();\n"125               "}",126               "if (a)\n"127               "  f();\n"128               "else if (b)\n"129               "  g();\n"130               "else\n"131               "  h();",132               Style);133 134  verifyFormat("if (a) {\n"135               "  f();\n"136               "}\n"137               "// comment\n"138               "/* comment */",139               "if (a)\n"140               "  f();\n"141               "// comment\n"142               "/* comment */",143               Style);144 145  verifyFormat("if (a) {\n"146               "  // foo\n"147               "  // bar\n"148               "  f();\n"149               "}",150               "if (a)\n"151               "  // foo\n"152               "  // bar\n"153               "  f();",154               Style);155 156  verifyFormat("if (a) { //\n"157               "  b = 1;\n"158               "}",159               "if (a) //\n"160               "  b = 1;",161               Style);162 163  verifyFormat("if (a) { // comment\n"164               "  // comment\n"165               "  f();\n"166               "}",167               "if (a) // comment\n"168               "  // comment\n"169               "  f();",170               Style);171 172  verifyFormat("if (a) {\n"173               "  f(); // comment\n"174               "}",175               "if (a)\n"176               "  f(); // comment",177               Style);178 179  verifyFormat("if (a) {\n"180               "  f();\n"181               "}\n"182               "#undef A\n"183               "#undef B",184               "if (a)\n"185               "  f();\n"186               "#undef A\n"187               "#undef B",188               Style);189 190  verifyFormat("if (a)\n"191               "#ifdef A\n"192               "  f();\n"193               "#else\n"194               "  g();\n"195               "#endif",196               Style);197 198  verifyFormat("#if 0\n"199               "#elif 1\n"200               "#endif\n"201               "void f() {\n"202               "  if (a) {\n"203               "    g();\n"204               "  }\n"205               "}",206               "#if 0\n"207               "#elif 1\n"208               "#endif\n"209               "void f() {\n"210               "  if (a) g();\n"211               "}",212               Style);213 214  verifyFormat("do {\n"215               "#if 0\n"216               "#else\n"217               "  if (b) {\n"218               "#endif\n"219               "  }\n"220               "} while (0);",221               Style);222 223  Style.RemoveBracesLLVM = true;224  verifyFormat("if (a) //\n"225               "  return b;",226               Style);227  Style.RemoveBracesLLVM = false;228 229  Style.ColumnLimit = 15;230 231  verifyFormat("#define A     \\\n"232               "  if (a)      \\\n"233               "    f();",234               Style);235 236  verifyFormat("if (a + b >\n"237               "    c) {\n"238               "  f();\n"239               "}",240               "if (a + b > c)\n"241               "  f();",242               Style);243 244  Style.BreakBeforeBraces = FormatStyle::BS_Custom;245  Style.BraceWrapping.AfterControlStatement = FormatStyle::BWACS_Always;246 247  verifyFormat("if (a) //\n"248               "{\n"249               "  b = 1;\n"250               "}",251               "if (a) //\n"252               "  b = 1;",253               Style);254}255 256TEST_F(BracesInserterTest, InsertBracesRange) {257  FormatStyle Style = getLLVMStyle();258  Style.InsertBraces = true;259 260  constexpr StringRef Code("while (a)\n"261                           "  if (b)\n"262                           "    return;");263 264  verifyFormat("while (a) {\n"265               "  if (b)\n"266               "    return;\n"267               "}",268               Code, Style, {tooling::Range(0, 9)}); // line 1269 270  verifyFormat("while (a) {\n"271               "  if (b) {\n"272               "    return;\n"273               "  }\n"274               "}",275               Code, Style, {tooling::Range(0, 18)}); // lines 1-2276 277  verifyFormat("while (a)\n"278               "  if (b) {\n"279               "    return;\n"280               "  }",281               Code, Style, {tooling::Range(10, 8)}); // line 2282 283  verifyFormat(Code, Code, Style, {tooling::Range(19, 11)}); // line 3284}285 286} // namespace287} // namespace test288} // namespace format289} // namespace clang290