1c58c70e2SDaniel Jasper //===- unittest/Format/FormatTestJava.cpp - Formatting tests for Java -----===// 2c58c70e2SDaniel Jasper // 3c58c70e2SDaniel Jasper // The LLVM Compiler Infrastructure 4c58c70e2SDaniel Jasper // 5c58c70e2SDaniel Jasper // This file is distributed under the University of Illinois Open Source 6c58c70e2SDaniel Jasper // License. See LICENSE.TXT for details. 7c58c70e2SDaniel Jasper // 8c58c70e2SDaniel Jasper //===----------------------------------------------------------------------===// 9c58c70e2SDaniel Jasper 10c58c70e2SDaniel Jasper #include "FormatTestUtils.h" 11c58c70e2SDaniel Jasper #include "clang/Format/Format.h" 12c58c70e2SDaniel Jasper #include "llvm/Support/Debug.h" 13c58c70e2SDaniel Jasper #include "gtest/gtest.h" 14c58c70e2SDaniel Jasper 15c58c70e2SDaniel Jasper #define DEBUG_TYPE "format-test" 16c58c70e2SDaniel Jasper 17c58c70e2SDaniel Jasper namespace clang { 18c58c70e2SDaniel Jasper namespace format { 19c58c70e2SDaniel Jasper 20c58c70e2SDaniel Jasper class FormatTestJava : public ::testing::Test { 21c58c70e2SDaniel Jasper protected: 22c58c70e2SDaniel Jasper static std::string format(llvm::StringRef Code, unsigned Offset, 23c58c70e2SDaniel Jasper unsigned Length, const FormatStyle &Style) { 24c58c70e2SDaniel Jasper DEBUG(llvm::errs() << "---\n"); 25c58c70e2SDaniel Jasper DEBUG(llvm::errs() << Code << "\n\n"); 26c58c70e2SDaniel Jasper std::vector<tooling::Range> Ranges(1, tooling::Range(Offset, Length)); 27c58c70e2SDaniel Jasper tooling::Replacements Replaces = reformat(Style, Code, Ranges); 28c58c70e2SDaniel Jasper std::string Result = applyAllReplacements(Code, Replaces); 29c58c70e2SDaniel Jasper EXPECT_NE("", Result); 30c58c70e2SDaniel Jasper DEBUG(llvm::errs() << "\n" << Result << "\n\n"); 31c58c70e2SDaniel Jasper return Result; 32c58c70e2SDaniel Jasper } 33c58c70e2SDaniel Jasper 34c58c70e2SDaniel Jasper static std::string format( 35c58c70e2SDaniel Jasper llvm::StringRef Code, 36c58c70e2SDaniel Jasper const FormatStyle &Style = getGoogleStyle(FormatStyle::LK_Java)) { 37c58c70e2SDaniel Jasper return format(Code, 0, Code.size(), Style); 38c58c70e2SDaniel Jasper } 39c58c70e2SDaniel Jasper 4050b4bd7cSDaniel Jasper static FormatStyle getStyleWithColumns(unsigned ColumnLimit) { 4150b4bd7cSDaniel Jasper FormatStyle Style = getGoogleStyle(FormatStyle::LK_Java); 4250b4bd7cSDaniel Jasper Style.ColumnLimit = ColumnLimit; 4350b4bd7cSDaniel Jasper return Style; 4450b4bd7cSDaniel Jasper } 4550b4bd7cSDaniel Jasper 46c58c70e2SDaniel Jasper static void verifyFormat( 47c58c70e2SDaniel Jasper llvm::StringRef Code, 48c58c70e2SDaniel Jasper const FormatStyle &Style = getGoogleStyle(FormatStyle::LK_Java)) { 49c58c70e2SDaniel Jasper EXPECT_EQ(Code.str(), format(test::messUp(Code), Style)); 50c58c70e2SDaniel Jasper } 51c58c70e2SDaniel Jasper }; 52c58c70e2SDaniel Jasper 5330a2406eSDaniel Jasper TEST_F(FormatTestJava, NoAlternativeOperatorNames) { 5430a2406eSDaniel Jasper verifyFormat("someObject.and();"); 5530a2406eSDaniel Jasper } 5630a2406eSDaniel Jasper 57a98b7b01SDaniel Jasper TEST_F(FormatTestJava, FormatsInstanceOfLikeOperators) { 58a98b7b01SDaniel Jasper FormatStyle Style = getStyleWithColumns(50); 59a98b7b01SDaniel Jasper verifyFormat("return aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" 60a98b7b01SDaniel Jasper " instanceof bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;", 61a98b7b01SDaniel Jasper Style); 62a98b7b01SDaniel Jasper Style.BreakBeforeBinaryOperators = FormatStyle::BOS_None; 63a98b7b01SDaniel Jasper verifyFormat("return aaaaaaaaaaaaaaaaaaaaaaaaaaaaa instanceof\n" 64a98b7b01SDaniel Jasper " bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;", 65a98b7b01SDaniel Jasper Style); 66a98b7b01SDaniel Jasper } 67a98b7b01SDaniel Jasper 68*e5d74867SDaniel Jasper TEST_F(FormatTestJava, ClassKeyword) { 69*e5d74867SDaniel Jasper verifyFormat("SomeClass.class.getName();"); 70*e5d74867SDaniel Jasper verifyFormat("Class c = SomeClass.class;"); 71*e5d74867SDaniel Jasper } 72*e5d74867SDaniel Jasper 73c58c70e2SDaniel Jasper TEST_F(FormatTestJava, ClassDeclarations) { 74c58c70e2SDaniel Jasper verifyFormat("public class SomeClass {\n" 75c58c70e2SDaniel Jasper " private int a;\n" 76c58c70e2SDaniel Jasper " private int b;\n" 77c58c70e2SDaniel Jasper "}"); 78c58c70e2SDaniel Jasper verifyFormat("public class A {\n" 79c58c70e2SDaniel Jasper " class B {\n" 80c58c70e2SDaniel Jasper " int i;\n" 81c58c70e2SDaniel Jasper " }\n" 82c58c70e2SDaniel Jasper " class C {\n" 83c58c70e2SDaniel Jasper " int j;\n" 84c58c70e2SDaniel Jasper " }\n" 85c58c70e2SDaniel Jasper "}"); 864bf9d470SDaniel Jasper verifyFormat("public class A extends B.C {}"); 8750b4bd7cSDaniel Jasper 88734d52b5SDaniel Jasper verifyFormat("abstract class SomeClass\n" 89734d52b5SDaniel Jasper " extends SomeOtherClass implements SomeInterface {}", 90734d52b5SDaniel Jasper getStyleWithColumns(60)); 9150b4bd7cSDaniel Jasper verifyFormat("abstract class SomeClass extends SomeOtherClass\n" 92734d52b5SDaniel Jasper " implements SomeInterfaceeeeeeeeeeeee {}", 9350b4bd7cSDaniel Jasper getStyleWithColumns(60)); 9450b4bd7cSDaniel Jasper verifyFormat("abstract class SomeClass\n" 9550b4bd7cSDaniel Jasper " extends SomeOtherClass\n" 9650b4bd7cSDaniel Jasper " implements SomeInterface {}", 9750b4bd7cSDaniel Jasper getStyleWithColumns(40)); 9850b4bd7cSDaniel Jasper verifyFormat("abstract class SomeClass\n" 9950b4bd7cSDaniel Jasper " extends SomeOtherClass\n" 10050b4bd7cSDaniel Jasper " implements SomeInterface,\n" 10150b4bd7cSDaniel Jasper " AnotherInterface {}", 10250b4bd7cSDaniel Jasper getStyleWithColumns(40)); 103734d52b5SDaniel Jasper verifyFormat("abstract class SomeClass\n" 104734d52b5SDaniel Jasper " implements SomeInterface, AnotherInterface {}", 105734d52b5SDaniel Jasper getStyleWithColumns(60)); 10639af6cd5SDaniel Jasper verifyFormat("@SomeAnnotation()\n" 107734d52b5SDaniel Jasper "abstract class aaaaaaaaaaaa\n" 108734d52b5SDaniel Jasper " extends bbbbbbbbbbbbbbb implements cccccccccccc {\n" 10939af6cd5SDaniel Jasper "}", 11039af6cd5SDaniel Jasper getStyleWithColumns(76)); 11158fcf6dfSDaniel Jasper verifyFormat("@SomeAnnotation()\n" 112734d52b5SDaniel Jasper "abstract class aaaaaaaaa<a>\n" 113734d52b5SDaniel Jasper " extends bbbbbbbbbbbb<b> implements cccccccccccc {\n" 11458fcf6dfSDaniel Jasper "}", 11558fcf6dfSDaniel Jasper getStyleWithColumns(76)); 116a644d7f3SNico Weber verifyFormat("interface SomeInterface<A> extends Foo, Bar {\n" 117a644d7f3SNico Weber " void doStuff(int theStuff);\n" 118a644d7f3SNico Weber " void doMoreStuff(int moreStuff);\n" 119a644d7f3SNico Weber "}"); 120a644d7f3SNico Weber verifyFormat("public interface SomeInterface {\n" 121a644d7f3SNico Weber " void doStuff(int theStuff);\n" 122a644d7f3SNico Weber " void doMoreStuff(int moreStuff);\n" 123a644d7f3SNico Weber "}"); 124a644d7f3SNico Weber verifyFormat("@interface SomeInterface {\n" 125a644d7f3SNico Weber " void doStuff(int theStuff);\n" 126a644d7f3SNico Weber " void doMoreStuff(int moreStuff);\n" 127a644d7f3SNico Weber "}"); 128a644d7f3SNico Weber verifyFormat("public @interface SomeInterface {\n" 129a644d7f3SNico Weber " void doStuff(int theStuff);\n" 130a644d7f3SNico Weber " void doMoreStuff(int moreStuff);\n" 131a644d7f3SNico Weber "}"); 132c58c70e2SDaniel Jasper } 133c58c70e2SDaniel Jasper 134df2ff002SDaniel Jasper TEST_F(FormatTestJava, EnumDeclarations) { 135df2ff002SDaniel Jasper verifyFormat("enum SomeThing { ABC, CDE }"); 136df2ff002SDaniel Jasper verifyFormat("enum SomeThing {\n" 137df2ff002SDaniel Jasper " ABC,\n" 138df2ff002SDaniel Jasper " CDE,\n" 139df2ff002SDaniel Jasper "}"); 140df2ff002SDaniel Jasper verifyFormat("public class SomeClass {\n" 141df2ff002SDaniel Jasper " enum SomeThing { ABC, CDE }\n" 142df2ff002SDaniel Jasper " void f() {\n" 143df2ff002SDaniel Jasper " }\n" 144df2ff002SDaniel Jasper "}"); 1456be0f55dSDaniel Jasper verifyFormat("public class SomeClass implements SomeInterface {\n" 1466be0f55dSDaniel Jasper " enum SomeThing { ABC, CDE }\n" 1476be0f55dSDaniel Jasper " void f() {\n" 1486be0f55dSDaniel Jasper " }\n" 1496be0f55dSDaniel Jasper "}"); 1506be0f55dSDaniel Jasper verifyFormat("enum SomeThing {\n" 1516be0f55dSDaniel Jasper " ABC,\n" 1526be0f55dSDaniel Jasper " CDE;\n" 1536be0f55dSDaniel Jasper " void f() {\n" 1546be0f55dSDaniel Jasper " }\n" 1556be0f55dSDaniel Jasper "}"); 1566be0f55dSDaniel Jasper verifyFormat("enum SomeThing {\n" 1576be0f55dSDaniel Jasper " ABC(1, \"ABC\"),\n" 1586be0f55dSDaniel Jasper " CDE(2, \"CDE\");\n" 1596be0f55dSDaniel Jasper " Something(int i, String s) {\n" 1606be0f55dSDaniel Jasper " }\n" 1616be0f55dSDaniel Jasper "}"); 1626be0f55dSDaniel Jasper verifyFormat("enum SomeThing {\n" 1636be0f55dSDaniel Jasper " ABC(new int[] {1, 2}),\n" 1646be0f55dSDaniel Jasper " CDE(new int[] {2, 3});\n" 1656be0f55dSDaniel Jasper " Something(int[] i) {\n" 1666be0f55dSDaniel Jasper " }\n" 1676be0f55dSDaniel Jasper "}"); 1686be0f55dSDaniel Jasper verifyFormat("public enum SomeThing {\n" 1696be0f55dSDaniel Jasper " ABC {\n" 1706be0f55dSDaniel Jasper " public String toString() {\n" 1716be0f55dSDaniel Jasper " return \"ABC\";\n" 1726be0f55dSDaniel Jasper " }\n" 1736be0f55dSDaniel Jasper " },\n" 1746be0f55dSDaniel Jasper " CDE {\n" 1756be0f55dSDaniel Jasper " @Override\n" 1766be0f55dSDaniel Jasper " public String toString() {\n" 1776be0f55dSDaniel Jasper " return \"CDE\";\n" 1786be0f55dSDaniel Jasper " }\n" 1796be0f55dSDaniel Jasper " };\n" 1806be0f55dSDaniel Jasper " public void f() {\n" 1816be0f55dSDaniel Jasper " }\n" 1826be0f55dSDaniel Jasper "}"); 183ccb68b48SDaniel Jasper verifyFormat("private enum SomeEnum implements Foo<?, B> {\n" 184ccb68b48SDaniel Jasper " ABC {\n" 185ccb68b48SDaniel Jasper " @Override\n" 186ccb68b48SDaniel Jasper " public String toString() {\n" 187ccb68b48SDaniel Jasper " return \"ABC\";\n" 188ccb68b48SDaniel Jasper " }\n" 189ccb68b48SDaniel Jasper " },\n" 190ccb68b48SDaniel Jasper " CDE {\n" 191ccb68b48SDaniel Jasper " @Override\n" 192ccb68b48SDaniel Jasper " public String toString() {\n" 193ccb68b48SDaniel Jasper " return \"CDE\";\n" 194ccb68b48SDaniel Jasper " }\n" 195ccb68b48SDaniel Jasper " };\n" 196ccb68b48SDaniel Jasper "}"); 197a0143fabSDaniel Jasper } 198a0143fabSDaniel Jasper 199a0143fabSDaniel Jasper TEST_F(FormatTestJava, ArrayInitializers) { 200a0143fabSDaniel Jasper verifyFormat("new int[] {1, 2, 3, 4};"); 201a0143fabSDaniel Jasper verifyFormat("new int[] {\n" 202a0143fabSDaniel Jasper " 1, 2, 3, 4,\n" 203a0143fabSDaniel Jasper "};"); 204df2ff002SDaniel Jasper } 205df2ff002SDaniel Jasper 206f26c755dSDaniel Jasper TEST_F(FormatTestJava, ThrowsDeclarations) { 207f26c755dSDaniel Jasper verifyFormat("public void doSooooooooooooooooooooooooooomething()\n" 208e003b78eSDaniel Jasper " throws LooooooooooooooooooooooooooooongException {\n}"); 209f26c755dSDaniel Jasper } 210f26c755dSDaniel Jasper 211fab69ff0SDaniel Jasper TEST_F(FormatTestJava, Annotations) { 212fab69ff0SDaniel Jasper verifyFormat("@Override\n" 213fab69ff0SDaniel Jasper "public String toString() {\n}"); 214fab69ff0SDaniel Jasper verifyFormat("@Override\n" 215fab69ff0SDaniel Jasper "@Nullable\n" 216fab69ff0SDaniel Jasper "public String getNameIfPresent() {\n}"); 217f1f0c356SDaniel Jasper 218f1f0c356SDaniel Jasper verifyFormat("@SuppressWarnings(value = \"unchecked\")\n" 219f1f0c356SDaniel Jasper "public void doSomething() {\n}"); 220d78c4223SDaniel Jasper verifyFormat("@SuppressWarnings(value = \"unchecked\")\n" 221d78c4223SDaniel Jasper "@Author(name = \"abc\")\n" 222d78c4223SDaniel Jasper "public void doSomething() {\n}"); 223f1f0c356SDaniel Jasper 224c7d024acSDaniel Jasper verifyFormat("DoSomething(new A() {\n" 225c7d024acSDaniel Jasper " @Override\n" 226c7d024acSDaniel Jasper " public String toString() {\n" 227c7d024acSDaniel Jasper " }\n" 228c7d024acSDaniel Jasper "});"); 229c7d024acSDaniel Jasper 230e9ab42dfSDaniel Jasper verifyFormat("void SomeFunction(@Nullable String something) {\n" 231e9ab42dfSDaniel Jasper "}"); 232e9ab42dfSDaniel Jasper 233fab69ff0SDaniel Jasper verifyFormat("@Partial @Mock DataLoader loader;"); 234fd68191dSDaniel Jasper verifyFormat("@SuppressWarnings(value = \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\")\n" 235fd68191dSDaniel Jasper "public static int iiiiiiiiiiiiiiiiiiiiiiii;"); 236e9ab42dfSDaniel Jasper 237e9ab42dfSDaniel Jasper verifyFormat("@SomeAnnotation(\"With some really looooooooooooooong text\")\n" 238e9ab42dfSDaniel Jasper "private static final long something = 0L;"); 239fab69ff0SDaniel Jasper } 240fab69ff0SDaniel Jasper 24116b107e9SDaniel Jasper TEST_F(FormatTestJava, Generics) { 24216b107e9SDaniel Jasper verifyFormat("Iterable<?> a;"); 24316b107e9SDaniel Jasper verifyFormat("Iterable<?> a;"); 24416b107e9SDaniel Jasper verifyFormat("Iterable<? extends SomeObject> a;"); 2455ffcb7feSDaniel Jasper 2465ffcb7feSDaniel Jasper verifyFormat("A.<B>doSomething();"); 2477bd618f5SDaniel Jasper 2487bd618f5SDaniel Jasper verifyFormat("@Override\n" 249db9a7a2fSDaniel Jasper "public Map<String, ?> getAll() {\n}"); 250db9a7a2fSDaniel Jasper 25109f6abe8SDaniel Jasper verifyFormat("public <R> ArrayList<R> get() {\n}"); 2524bfa736fSDaniel Jasper verifyFormat("protected <R> ArrayList<R> get() {\n}"); 2534bfa736fSDaniel Jasper verifyFormat("private <R> ArrayList<R> get() {\n}"); 254db9a7a2fSDaniel Jasper verifyFormat("public static <R> ArrayList<R> get() {\n}"); 25582c92753SDaniel Jasper verifyFormat("public final <X> Foo foo() {\n}"); 25682c92753SDaniel Jasper verifyFormat("public abstract <X> Foo foo();"); 257f056f45bSDaniel Jasper verifyFormat("<T extends B> T getInstance(Class<T> type);"); 25861d81973SDaniel Jasper verifyFormat("Function<F, ? extends T> function;"); 2596761b42bSDaniel Jasper 2606761b42bSDaniel Jasper verifyFormat("private Foo<X, Y>[] foos;"); 2616761b42bSDaniel Jasper verifyFormat("Foo<X, Y>[] foos = this.foos;"); 262caf86859SDaniel Jasper 263caf86859SDaniel Jasper verifyFormat( 264caf86859SDaniel Jasper "SomeLoooooooooooooooooooooongType name =\n" 265caf86859SDaniel Jasper " SomeType.foo(someArgument)\n" 266caf86859SDaniel Jasper " .<X>method()\n" 267caf86859SDaniel Jasper " .aaaaaaaaaaaaaaaaaaa()\n" 268caf86859SDaniel Jasper " .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();"); 26916b107e9SDaniel Jasper } 27016b107e9SDaniel Jasper 271c0126864SDaniel Jasper TEST_F(FormatTestJava, StringConcatenation) { 272c0126864SDaniel Jasper verifyFormat("String someString = \"abc\"\n" 273c0126864SDaniel Jasper " + \"cde\";"); 274c0126864SDaniel Jasper } 275c0126864SDaniel Jasper 276a3ddf86dSDaniel Jasper TEST_F(FormatTestJava, TryCatchFinally) { 277a3ddf86dSDaniel Jasper verifyFormat("try {\n" 278a3ddf86dSDaniel Jasper " Something();\n" 279a3ddf86dSDaniel Jasper "} catch (SomeException e) {\n" 280a3ddf86dSDaniel Jasper " HandleException(e);\n" 281a3ddf86dSDaniel Jasper "}"); 282a3ddf86dSDaniel Jasper verifyFormat("try {\n" 283a3ddf86dSDaniel Jasper " Something();\n" 284a3ddf86dSDaniel Jasper "} finally {\n" 285a3ddf86dSDaniel Jasper " AlwaysDoThis();\n" 286a3ddf86dSDaniel Jasper "}"); 287a3ddf86dSDaniel Jasper verifyFormat("try {\n" 288a3ddf86dSDaniel Jasper " Something();\n" 289a3ddf86dSDaniel Jasper "} catch (SomeException e) {\n" 290a3ddf86dSDaniel Jasper " HandleException(e);\n" 291a3ddf86dSDaniel Jasper "} finally {\n" 292a3ddf86dSDaniel Jasper " AlwaysDoThis();\n" 293a3ddf86dSDaniel Jasper "}"); 294a3ddf86dSDaniel Jasper 295a3ddf86dSDaniel Jasper verifyFormat("try {\n" 296a3ddf86dSDaniel Jasper " Something();\n" 297a3ddf86dSDaniel Jasper "} catch (SomeException | OtherException e) {\n" 298a3ddf86dSDaniel Jasper " HandleException(e);\n" 299a3ddf86dSDaniel Jasper "}"); 300a3ddf86dSDaniel Jasper } 301a3ddf86dSDaniel Jasper 302b9d3db6bSDaniel Jasper TEST_F(FormatTestJava, SynchronizedKeyword) { 303b9d3db6bSDaniel Jasper verifyFormat("synchronized (mData) {\n" 304b9d3db6bSDaniel Jasper " // ...\n" 305b9d3db6bSDaniel Jasper "}"); 306b9d3db6bSDaniel Jasper } 307b9d3db6bSDaniel Jasper 3085e7be1d5SDaniel Jasper TEST_F(FormatTestJava, ImportDeclarations) { 3095e7be1d5SDaniel Jasper verifyFormat("import some.really.loooooooooooooooooooooong.imported.Class;", 3105e7be1d5SDaniel Jasper getStyleWithColumns(50)); 3115e7be1d5SDaniel Jasper } 3125e7be1d5SDaniel Jasper 3133aa9a6a1SDaniel Jasper TEST_F(FormatTestJava, MethodDeclarations) { 3143aa9a6a1SDaniel Jasper verifyFormat("void methodName(Object arg1,\n" 3153aa9a6a1SDaniel Jasper " Object arg2, Object arg3) {\n" 3163aa9a6a1SDaniel Jasper "}", 3173aa9a6a1SDaniel Jasper getStyleWithColumns(40)); 3183aa9a6a1SDaniel Jasper verifyFormat("void methodName(\n" 3193aa9a6a1SDaniel Jasper " Object arg1, Object arg2) {\n" 3203aa9a6a1SDaniel Jasper "}", 3213aa9a6a1SDaniel Jasper getStyleWithColumns(40)); 3223aa9a6a1SDaniel Jasper } 3233aa9a6a1SDaniel Jasper 324fe2cf667SDaniel Jasper TEST_F(FormatTestJava, CppKeywords) { 325fe2cf667SDaniel Jasper verifyFormat("public void union(Type a, Type b);"); 326fe2cf667SDaniel Jasper verifyFormat("public void struct(Object o);"); 327fe2cf667SDaniel Jasper verifyFormat("public void delete(Object o);"); 328fe2cf667SDaniel Jasper } 329fe2cf667SDaniel Jasper 3306cab6784SDaniel Jasper TEST_F(FormatTestJava, NeverAlignAfterReturn) { 3316cab6784SDaniel Jasper verifyFormat("return aaaaaaaaaaaaaaaaaaa\n" 3326cab6784SDaniel Jasper " && bbbbbbbbbbbbbbbbbbb\n" 3336cab6784SDaniel Jasper " && ccccccccccccccccccc;", 3346cab6784SDaniel Jasper getStyleWithColumns(40)); 3356cab6784SDaniel Jasper verifyFormat("return (result == null)\n" 3366cab6784SDaniel Jasper " ? aaaaaaaaaaaaaaaaa\n" 3376cab6784SDaniel Jasper " : bbbbbbbbbbbbbbbbb;", 3386cab6784SDaniel Jasper getStyleWithColumns(40)); 3396cab6784SDaniel Jasper verifyFormat("return aaaaaaaaaaaaaaaaaaa()\n" 3406cab6784SDaniel Jasper " .bbbbbbbbbbbbbbbbbbb()\n" 3416cab6784SDaniel Jasper " .ccccccccccccccccccc();", 3426cab6784SDaniel Jasper getStyleWithColumns(40)); 3436cab6784SDaniel Jasper } 3446cab6784SDaniel Jasper 3454b444495SDaniel Jasper TEST_F(FormatTestJava, FormatsInnerBlocks) { 3464b444495SDaniel Jasper verifyFormat("someObject.someFunction(new Runnable() {\n" 3474b444495SDaniel Jasper " @Override\n" 3484b444495SDaniel Jasper " public void run() {\n" 3494b444495SDaniel Jasper " System.out.println(42);\n" 3504b444495SDaniel Jasper " }\n" 3514b444495SDaniel Jasper "}, someOtherParameter);"); 3524b444495SDaniel Jasper verifyFormat("someObject.someFunction(\n" 3534b444495SDaniel Jasper " new Runnable() {\n" 3544b444495SDaniel Jasper " @Override\n" 3554b444495SDaniel Jasper " public void run() {\n" 3564b444495SDaniel Jasper " System.out.println(42);\n" 3574b444495SDaniel Jasper " }\n" 3584b444495SDaniel Jasper " },\n" 3594b444495SDaniel Jasper " new Runnable() {\n" 3604b444495SDaniel Jasper " @Override\n" 3614b444495SDaniel Jasper " public void run() {\n" 3624b444495SDaniel Jasper " System.out.println(43);\n" 3634b444495SDaniel Jasper " }\n" 3644b444495SDaniel Jasper " },\n" 3654b444495SDaniel Jasper " someOtherParameter);"); 3664b444495SDaniel Jasper } 3674b444495SDaniel Jasper 3688354ea84SDaniel Jasper TEST_F(FormatTestJava, FormatsLambdas) { 3698354ea84SDaniel Jasper verifyFormat("(aaaaaaaaaa, bbbbbbbbbb) -> aaaaaaaaaa + bbbbbbbbbb;"); 3708354ea84SDaniel Jasper verifyFormat("(aaaaaaaaaa, bbbbbbbbbb)\n" 3718354ea84SDaniel Jasper " -> aaaaaaaaaa + bbbbbbbbbb;", 3728354ea84SDaniel Jasper getStyleWithColumns(40)); 3738354ea84SDaniel Jasper verifyFormat("Runnable someLambda = () -> DoSomething();"); 3748354ea84SDaniel Jasper verifyFormat("Runnable someLambda = () -> {\n" 3758354ea84SDaniel Jasper " DoSomething();\n" 3768354ea84SDaniel Jasper "}"); 3778354ea84SDaniel Jasper 3788354ea84SDaniel Jasper verifyFormat("Runnable someLambda =\n" 3798354ea84SDaniel Jasper " (int aaaaa) -> DoSomething(aaaaa);", 3808354ea84SDaniel Jasper getStyleWithColumns(40)); 3818354ea84SDaniel Jasper } 3828354ea84SDaniel Jasper 383c58c70e2SDaniel Jasper } // end namespace tooling 384c58c70e2SDaniel Jasper } // end namespace clang 385