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 
57*a98b7b01SDaniel Jasper TEST_F(FormatTestJava, FormatsInstanceOfLikeOperators) {
58*a98b7b01SDaniel Jasper   FormatStyle Style = getStyleWithColumns(50);
59*a98b7b01SDaniel Jasper   verifyFormat("return aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
60*a98b7b01SDaniel Jasper                "    instanceof bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;",
61*a98b7b01SDaniel Jasper                Style);
62*a98b7b01SDaniel Jasper   Style.BreakBeforeBinaryOperators = FormatStyle::BOS_None;
63*a98b7b01SDaniel Jasper   verifyFormat("return aaaaaaaaaaaaaaaaaaaaaaaaaaaaa instanceof\n"
64*a98b7b01SDaniel Jasper                "    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;",
65*a98b7b01SDaniel Jasper                Style);
66*a98b7b01SDaniel Jasper }
67*a98b7b01SDaniel Jasper 
68c58c70e2SDaniel Jasper TEST_F(FormatTestJava, ClassDeclarations) {
69c58c70e2SDaniel Jasper   verifyFormat("public class SomeClass {\n"
70c58c70e2SDaniel Jasper                "  private int a;\n"
71c58c70e2SDaniel Jasper                "  private int b;\n"
72c58c70e2SDaniel Jasper                "}");
73c58c70e2SDaniel Jasper   verifyFormat("public class A {\n"
74c58c70e2SDaniel Jasper                "  class B {\n"
75c58c70e2SDaniel Jasper                "    int i;\n"
76c58c70e2SDaniel Jasper                "  }\n"
77c58c70e2SDaniel Jasper                "  class C {\n"
78c58c70e2SDaniel Jasper                "    int j;\n"
79c58c70e2SDaniel Jasper                "  }\n"
80c58c70e2SDaniel Jasper                "}");
814bf9d470SDaniel Jasper   verifyFormat("public class A extends B.C {}");
8250b4bd7cSDaniel Jasper 
83734d52b5SDaniel Jasper   verifyFormat("abstract class SomeClass\n"
84734d52b5SDaniel Jasper                "    extends SomeOtherClass implements SomeInterface {}",
85734d52b5SDaniel Jasper                getStyleWithColumns(60));
8650b4bd7cSDaniel Jasper   verifyFormat("abstract class SomeClass extends SomeOtherClass\n"
87734d52b5SDaniel Jasper                "    implements SomeInterfaceeeeeeeeeeeee {}",
8850b4bd7cSDaniel Jasper                getStyleWithColumns(60));
8950b4bd7cSDaniel Jasper   verifyFormat("abstract class SomeClass\n"
9050b4bd7cSDaniel Jasper                "    extends SomeOtherClass\n"
9150b4bd7cSDaniel Jasper                "    implements SomeInterface {}",
9250b4bd7cSDaniel Jasper                getStyleWithColumns(40));
9350b4bd7cSDaniel Jasper   verifyFormat("abstract class SomeClass\n"
9450b4bd7cSDaniel Jasper                "    extends SomeOtherClass\n"
9550b4bd7cSDaniel Jasper                "    implements SomeInterface,\n"
9650b4bd7cSDaniel Jasper                "               AnotherInterface {}",
9750b4bd7cSDaniel Jasper                getStyleWithColumns(40));
98734d52b5SDaniel Jasper   verifyFormat("abstract class SomeClass\n"
99734d52b5SDaniel Jasper                "    implements SomeInterface, AnotherInterface {}",
100734d52b5SDaniel Jasper                getStyleWithColumns(60));
10139af6cd5SDaniel Jasper   verifyFormat("@SomeAnnotation()\n"
102734d52b5SDaniel Jasper                "abstract class aaaaaaaaaaaa\n"
103734d52b5SDaniel Jasper                "    extends bbbbbbbbbbbbbbb implements cccccccccccc {\n"
10439af6cd5SDaniel Jasper                "}",
10539af6cd5SDaniel Jasper                getStyleWithColumns(76));
10658fcf6dfSDaniel Jasper   verifyFormat("@SomeAnnotation()\n"
107734d52b5SDaniel Jasper                "abstract class aaaaaaaaa<a>\n"
108734d52b5SDaniel Jasper                "    extends bbbbbbbbbbbb<b> implements cccccccccccc {\n"
10958fcf6dfSDaniel Jasper                "}",
11058fcf6dfSDaniel Jasper                getStyleWithColumns(76));
111a644d7f3SNico Weber   verifyFormat("interface SomeInterface<A> extends Foo, Bar {\n"
112a644d7f3SNico Weber                "  void doStuff(int theStuff);\n"
113a644d7f3SNico Weber                "  void doMoreStuff(int moreStuff);\n"
114a644d7f3SNico Weber                "}");
115a644d7f3SNico Weber   verifyFormat("public interface SomeInterface {\n"
116a644d7f3SNico Weber                "  void doStuff(int theStuff);\n"
117a644d7f3SNico Weber                "  void doMoreStuff(int moreStuff);\n"
118a644d7f3SNico Weber                "}");
119a644d7f3SNico Weber   verifyFormat("@interface SomeInterface {\n"
120a644d7f3SNico Weber                "  void doStuff(int theStuff);\n"
121a644d7f3SNico Weber                "  void doMoreStuff(int moreStuff);\n"
122a644d7f3SNico Weber                "}");
123a644d7f3SNico Weber   verifyFormat("public @interface SomeInterface {\n"
124a644d7f3SNico Weber                "  void doStuff(int theStuff);\n"
125a644d7f3SNico Weber                "  void doMoreStuff(int moreStuff);\n"
126a644d7f3SNico Weber                "}");
127c58c70e2SDaniel Jasper }
128c58c70e2SDaniel Jasper 
129df2ff002SDaniel Jasper TEST_F(FormatTestJava, EnumDeclarations) {
130df2ff002SDaniel Jasper   verifyFormat("enum SomeThing { ABC, CDE }");
131df2ff002SDaniel Jasper   verifyFormat("enum SomeThing {\n"
132df2ff002SDaniel Jasper                "  ABC,\n"
133df2ff002SDaniel Jasper                "  CDE,\n"
134df2ff002SDaniel Jasper                "}");
135df2ff002SDaniel Jasper   verifyFormat("public class SomeClass {\n"
136df2ff002SDaniel Jasper                "  enum SomeThing { ABC, CDE }\n"
137df2ff002SDaniel Jasper                "  void f() {\n"
138df2ff002SDaniel Jasper                "  }\n"
139df2ff002SDaniel Jasper                "}");
1406be0f55dSDaniel Jasper   verifyFormat("public class SomeClass implements SomeInterface {\n"
1416be0f55dSDaniel Jasper                "  enum SomeThing { ABC, CDE }\n"
1426be0f55dSDaniel Jasper                "  void f() {\n"
1436be0f55dSDaniel Jasper                "  }\n"
1446be0f55dSDaniel Jasper                "}");
1456be0f55dSDaniel Jasper   verifyFormat("enum SomeThing {\n"
1466be0f55dSDaniel Jasper                "  ABC,\n"
1476be0f55dSDaniel Jasper                "  CDE;\n"
1486be0f55dSDaniel Jasper                "  void f() {\n"
1496be0f55dSDaniel Jasper                "  }\n"
1506be0f55dSDaniel Jasper                "}");
1516be0f55dSDaniel Jasper   verifyFormat("enum SomeThing {\n"
1526be0f55dSDaniel Jasper                "  ABC(1, \"ABC\"),\n"
1536be0f55dSDaniel Jasper                "  CDE(2, \"CDE\");\n"
1546be0f55dSDaniel Jasper                "  Something(int i, String s) {\n"
1556be0f55dSDaniel Jasper                "  }\n"
1566be0f55dSDaniel Jasper                "}");
1576be0f55dSDaniel Jasper   verifyFormat("enum SomeThing {\n"
1586be0f55dSDaniel Jasper                "  ABC(new int[] {1, 2}),\n"
1596be0f55dSDaniel Jasper                "  CDE(new int[] {2, 3});\n"
1606be0f55dSDaniel Jasper                "  Something(int[] i) {\n"
1616be0f55dSDaniel Jasper                "  }\n"
1626be0f55dSDaniel Jasper                "}");
1636be0f55dSDaniel Jasper   verifyFormat("public enum SomeThing {\n"
1646be0f55dSDaniel Jasper                "  ABC {\n"
1656be0f55dSDaniel Jasper                "    public String toString() {\n"
1666be0f55dSDaniel Jasper                "      return \"ABC\";\n"
1676be0f55dSDaniel Jasper                "    }\n"
1686be0f55dSDaniel Jasper                "  },\n"
1696be0f55dSDaniel Jasper                "  CDE {\n"
1706be0f55dSDaniel Jasper                "    @Override\n"
1716be0f55dSDaniel Jasper                "    public String toString() {\n"
1726be0f55dSDaniel Jasper                "      return \"CDE\";\n"
1736be0f55dSDaniel Jasper                "    }\n"
1746be0f55dSDaniel Jasper                "  };\n"
1756be0f55dSDaniel Jasper                "  public void f() {\n"
1766be0f55dSDaniel Jasper                "  }\n"
1776be0f55dSDaniel Jasper                "}");
178ccb68b48SDaniel Jasper   verifyFormat("private enum SomeEnum implements Foo<?, B> {\n"
179ccb68b48SDaniel Jasper                "  ABC {\n"
180ccb68b48SDaniel Jasper                "    @Override\n"
181ccb68b48SDaniel Jasper                "    public String toString() {\n"
182ccb68b48SDaniel Jasper                "      return \"ABC\";\n"
183ccb68b48SDaniel Jasper                "    }\n"
184ccb68b48SDaniel Jasper                "  },\n"
185ccb68b48SDaniel Jasper                "  CDE {\n"
186ccb68b48SDaniel Jasper                "    @Override\n"
187ccb68b48SDaniel Jasper                "    public String toString() {\n"
188ccb68b48SDaniel Jasper                "      return \"CDE\";\n"
189ccb68b48SDaniel Jasper                "    }\n"
190ccb68b48SDaniel Jasper                "  };\n"
191ccb68b48SDaniel Jasper                "}");
192a0143fabSDaniel Jasper }
193a0143fabSDaniel Jasper 
194a0143fabSDaniel Jasper TEST_F(FormatTestJava, ArrayInitializers) {
195a0143fabSDaniel Jasper   verifyFormat("new int[] {1, 2, 3, 4};");
196a0143fabSDaniel Jasper   verifyFormat("new int[] {\n"
197a0143fabSDaniel Jasper                "    1, 2, 3, 4,\n"
198a0143fabSDaniel Jasper                "};");
199df2ff002SDaniel Jasper }
200df2ff002SDaniel Jasper 
201f26c755dSDaniel Jasper TEST_F(FormatTestJava, ThrowsDeclarations) {
202f26c755dSDaniel Jasper   verifyFormat("public void doSooooooooooooooooooooooooooomething()\n"
203e003b78eSDaniel Jasper                "    throws LooooooooooooooooooooooooooooongException {\n}");
204f26c755dSDaniel Jasper }
205f26c755dSDaniel Jasper 
206fab69ff0SDaniel Jasper TEST_F(FormatTestJava, Annotations) {
207fab69ff0SDaniel Jasper   verifyFormat("@Override\n"
208fab69ff0SDaniel Jasper                "public String toString() {\n}");
209fab69ff0SDaniel Jasper   verifyFormat("@Override\n"
210fab69ff0SDaniel Jasper                "@Nullable\n"
211fab69ff0SDaniel Jasper                "public String getNameIfPresent() {\n}");
212f1f0c356SDaniel Jasper 
213f1f0c356SDaniel Jasper   verifyFormat("@SuppressWarnings(value = \"unchecked\")\n"
214f1f0c356SDaniel Jasper                "public void doSomething() {\n}");
215d78c4223SDaniel Jasper   verifyFormat("@SuppressWarnings(value = \"unchecked\")\n"
216d78c4223SDaniel Jasper                "@Author(name = \"abc\")\n"
217d78c4223SDaniel Jasper                "public void doSomething() {\n}");
218f1f0c356SDaniel Jasper 
219c7d024acSDaniel Jasper   verifyFormat("DoSomething(new A() {\n"
220c7d024acSDaniel Jasper                "  @Override\n"
221c7d024acSDaniel Jasper                "  public String toString() {\n"
222c7d024acSDaniel Jasper                "  }\n"
223c7d024acSDaniel Jasper                "});");
224c7d024acSDaniel Jasper 
225e9ab42dfSDaniel Jasper   verifyFormat("void SomeFunction(@Nullable String something) {\n"
226e9ab42dfSDaniel Jasper                "}");
227e9ab42dfSDaniel Jasper 
228fab69ff0SDaniel Jasper   verifyFormat("@Partial @Mock DataLoader loader;");
229fd68191dSDaniel Jasper   verifyFormat("@SuppressWarnings(value = \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\")\n"
230fd68191dSDaniel Jasper                "public static int iiiiiiiiiiiiiiiiiiiiiiii;");
231e9ab42dfSDaniel Jasper 
232e9ab42dfSDaniel Jasper   verifyFormat("@SomeAnnotation(\"With some really looooooooooooooong text\")\n"
233e9ab42dfSDaniel Jasper                "private static final long something = 0L;");
234fab69ff0SDaniel Jasper }
235fab69ff0SDaniel Jasper 
23616b107e9SDaniel Jasper TEST_F(FormatTestJava, Generics) {
23716b107e9SDaniel Jasper   verifyFormat("Iterable<?> a;");
23816b107e9SDaniel Jasper   verifyFormat("Iterable<?> a;");
23916b107e9SDaniel Jasper   verifyFormat("Iterable<? extends SomeObject> a;");
2405ffcb7feSDaniel Jasper 
2415ffcb7feSDaniel Jasper   verifyFormat("A.<B>doSomething();");
2427bd618f5SDaniel Jasper 
2437bd618f5SDaniel Jasper   verifyFormat("@Override\n"
244db9a7a2fSDaniel Jasper                "public Map<String, ?> getAll() {\n}");
245db9a7a2fSDaniel Jasper 
24609f6abe8SDaniel Jasper   verifyFormat("public <R> ArrayList<R> get() {\n}");
2474bfa736fSDaniel Jasper   verifyFormat("protected <R> ArrayList<R> get() {\n}");
2484bfa736fSDaniel Jasper   verifyFormat("private <R> ArrayList<R> get() {\n}");
249db9a7a2fSDaniel Jasper   verifyFormat("public static <R> ArrayList<R> get() {\n}");
25082c92753SDaniel Jasper   verifyFormat("public final <X> Foo foo() {\n}");
25182c92753SDaniel Jasper   verifyFormat("public abstract <X> Foo foo();");
252f056f45bSDaniel Jasper   verifyFormat("<T extends B> T getInstance(Class<T> type);");
25361d81973SDaniel Jasper   verifyFormat("Function<F, ? extends T> function;");
2546761b42bSDaniel Jasper 
2556761b42bSDaniel Jasper   verifyFormat("private Foo<X, Y>[] foos;");
2566761b42bSDaniel Jasper   verifyFormat("Foo<X, Y>[] foos = this.foos;");
257caf86859SDaniel Jasper 
258caf86859SDaniel Jasper   verifyFormat(
259caf86859SDaniel Jasper       "SomeLoooooooooooooooooooooongType name =\n"
260caf86859SDaniel Jasper       "    SomeType.foo(someArgument)\n"
261caf86859SDaniel Jasper       "        .<X>method()\n"
262caf86859SDaniel Jasper       "        .aaaaaaaaaaaaaaaaaaa()\n"
263caf86859SDaniel Jasper       "        .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();");
26416b107e9SDaniel Jasper }
26516b107e9SDaniel Jasper 
266c0126864SDaniel Jasper TEST_F(FormatTestJava, StringConcatenation) {
267c0126864SDaniel Jasper   verifyFormat("String someString = \"abc\"\n"
268c0126864SDaniel Jasper                "                    + \"cde\";");
269c0126864SDaniel Jasper }
270c0126864SDaniel Jasper 
271a3ddf86dSDaniel Jasper TEST_F(FormatTestJava, TryCatchFinally) {
272a3ddf86dSDaniel Jasper   verifyFormat("try {\n"
273a3ddf86dSDaniel Jasper                "  Something();\n"
274a3ddf86dSDaniel Jasper                "} catch (SomeException e) {\n"
275a3ddf86dSDaniel Jasper                "  HandleException(e);\n"
276a3ddf86dSDaniel Jasper                "}");
277a3ddf86dSDaniel Jasper   verifyFormat("try {\n"
278a3ddf86dSDaniel Jasper                "  Something();\n"
279a3ddf86dSDaniel Jasper                "} finally {\n"
280a3ddf86dSDaniel Jasper                "  AlwaysDoThis();\n"
281a3ddf86dSDaniel Jasper                "}");
282a3ddf86dSDaniel Jasper   verifyFormat("try {\n"
283a3ddf86dSDaniel Jasper                "  Something();\n"
284a3ddf86dSDaniel Jasper                "} catch (SomeException e) {\n"
285a3ddf86dSDaniel Jasper                "  HandleException(e);\n"
286a3ddf86dSDaniel Jasper                "} finally {\n"
287a3ddf86dSDaniel Jasper                "  AlwaysDoThis();\n"
288a3ddf86dSDaniel Jasper                "}");
289a3ddf86dSDaniel Jasper 
290a3ddf86dSDaniel Jasper   verifyFormat("try {\n"
291a3ddf86dSDaniel Jasper                "  Something();\n"
292a3ddf86dSDaniel Jasper                "} catch (SomeException | OtherException e) {\n"
293a3ddf86dSDaniel Jasper                "  HandleException(e);\n"
294a3ddf86dSDaniel Jasper                "}");
295a3ddf86dSDaniel Jasper }
296a3ddf86dSDaniel Jasper 
297b9d3db6bSDaniel Jasper TEST_F(FormatTestJava, SynchronizedKeyword) {
298b9d3db6bSDaniel Jasper   verifyFormat("synchronized (mData) {\n"
299b9d3db6bSDaniel Jasper                "  // ...\n"
300b9d3db6bSDaniel Jasper                "}");
301b9d3db6bSDaniel Jasper }
302b9d3db6bSDaniel Jasper 
3035e7be1d5SDaniel Jasper TEST_F(FormatTestJava, ImportDeclarations) {
3045e7be1d5SDaniel Jasper   verifyFormat("import some.really.loooooooooooooooooooooong.imported.Class;",
3055e7be1d5SDaniel Jasper                getStyleWithColumns(50));
3065e7be1d5SDaniel Jasper }
3075e7be1d5SDaniel Jasper 
3083aa9a6a1SDaniel Jasper TEST_F(FormatTestJava, MethodDeclarations) {
3093aa9a6a1SDaniel Jasper   verifyFormat("void methodName(Object arg1,\n"
3103aa9a6a1SDaniel Jasper                "    Object arg2, Object arg3) {\n"
3113aa9a6a1SDaniel Jasper                "}",
3123aa9a6a1SDaniel Jasper                getStyleWithColumns(40));
3133aa9a6a1SDaniel Jasper   verifyFormat("void methodName(\n"
3143aa9a6a1SDaniel Jasper                "    Object arg1, Object arg2) {\n"
3153aa9a6a1SDaniel Jasper                "}",
3163aa9a6a1SDaniel Jasper                getStyleWithColumns(40));
3173aa9a6a1SDaniel Jasper }
3183aa9a6a1SDaniel Jasper 
319fe2cf667SDaniel Jasper TEST_F(FormatTestJava, CppKeywords) {
320fe2cf667SDaniel Jasper   verifyFormat("public void union(Type a, Type b);");
321fe2cf667SDaniel Jasper   verifyFormat("public void struct(Object o);");
322fe2cf667SDaniel Jasper   verifyFormat("public void delete(Object o);");
323fe2cf667SDaniel Jasper }
324fe2cf667SDaniel Jasper 
3256cab6784SDaniel Jasper TEST_F(FormatTestJava, NeverAlignAfterReturn) {
3266cab6784SDaniel Jasper   verifyFormat("return aaaaaaaaaaaaaaaaaaa\n"
3276cab6784SDaniel Jasper                "    && bbbbbbbbbbbbbbbbbbb\n"
3286cab6784SDaniel Jasper                "    && ccccccccccccccccccc;",
3296cab6784SDaniel Jasper                getStyleWithColumns(40));
3306cab6784SDaniel Jasper   verifyFormat("return (result == null)\n"
3316cab6784SDaniel Jasper                "    ? aaaaaaaaaaaaaaaaa\n"
3326cab6784SDaniel Jasper                "    : bbbbbbbbbbbbbbbbb;",
3336cab6784SDaniel Jasper                getStyleWithColumns(40));
3346cab6784SDaniel Jasper   verifyFormat("return aaaaaaaaaaaaaaaaaaa()\n"
3356cab6784SDaniel Jasper                "    .bbbbbbbbbbbbbbbbbbb()\n"
3366cab6784SDaniel Jasper                "    .ccccccccccccccccccc();",
3376cab6784SDaniel Jasper                getStyleWithColumns(40));
3386cab6784SDaniel Jasper }
3396cab6784SDaniel Jasper 
3404b444495SDaniel Jasper TEST_F(FormatTestJava, FormatsInnerBlocks) {
3414b444495SDaniel Jasper   verifyFormat("someObject.someFunction(new Runnable() {\n"
3424b444495SDaniel Jasper                "  @Override\n"
3434b444495SDaniel Jasper                "  public void run() {\n"
3444b444495SDaniel Jasper                "    System.out.println(42);\n"
3454b444495SDaniel Jasper                "  }\n"
3464b444495SDaniel Jasper                "}, someOtherParameter);");
3474b444495SDaniel Jasper   verifyFormat("someObject.someFunction(\n"
3484b444495SDaniel Jasper                "    new Runnable() {\n"
3494b444495SDaniel Jasper                "      @Override\n"
3504b444495SDaniel Jasper                "      public void run() {\n"
3514b444495SDaniel Jasper                "        System.out.println(42);\n"
3524b444495SDaniel Jasper                "      }\n"
3534b444495SDaniel Jasper                "    },\n"
3544b444495SDaniel Jasper                "    new Runnable() {\n"
3554b444495SDaniel Jasper                "      @Override\n"
3564b444495SDaniel Jasper                "      public void run() {\n"
3574b444495SDaniel Jasper                "        System.out.println(43);\n"
3584b444495SDaniel Jasper                "      }\n"
3594b444495SDaniel Jasper                "    },\n"
3604b444495SDaniel Jasper                "    someOtherParameter);");
3614b444495SDaniel Jasper }
3624b444495SDaniel Jasper 
3638354ea84SDaniel Jasper TEST_F(FormatTestJava, FormatsLambdas) {
3648354ea84SDaniel Jasper   verifyFormat("(aaaaaaaaaa, bbbbbbbbbb) -> aaaaaaaaaa + bbbbbbbbbb;");
3658354ea84SDaniel Jasper   verifyFormat("(aaaaaaaaaa, bbbbbbbbbb)\n"
3668354ea84SDaniel Jasper                "    -> aaaaaaaaaa + bbbbbbbbbb;",
3678354ea84SDaniel Jasper                getStyleWithColumns(40));
3688354ea84SDaniel Jasper   verifyFormat("Runnable someLambda = () -> DoSomething();");
3698354ea84SDaniel Jasper   verifyFormat("Runnable someLambda = () -> {\n"
3708354ea84SDaniel Jasper                "  DoSomething();\n"
3718354ea84SDaniel Jasper                "}");
3728354ea84SDaniel Jasper 
3738354ea84SDaniel Jasper   verifyFormat("Runnable someLambda =\n"
3748354ea84SDaniel Jasper                "    (int aaaaa) -> DoSomething(aaaaa);",
3758354ea84SDaniel Jasper                getStyleWithColumns(40));
3768354ea84SDaniel Jasper }
3778354ea84SDaniel Jasper 
378c58c70e2SDaniel Jasper } // end namespace tooling
379c58c70e2SDaniel Jasper } // end namespace clang
380