1   package com.puppycrawl.tools.checkstyle.checks.indentation.indentation; //indent:0 exp:0
2   
3   import java.util.List; //indent:0 exp:0
4   import java.util.function.Function; //indent:0 exp:0
5   
6   /**                                                                           //indent:0 exp:0
7    * This test-input is intended to be checked using following configuration:   //indent:1 exp:1
8    *                                                                            //indent:1 exp:1
9    * arrayInitIndent = 4                                                        //indent:1 exp:1
10   * basicOffset = 4                                                            //indent:1 exp:1
11   * braceAdjustment = 0                                                        //indent:1 exp:1
12   * caseIndent = 4                                                             //indent:1 exp:1
13   * forceStrictCondition = false                                               //indent:1 exp:1
14   * lineWrappingIndentation = 4                                                //indent:1 exp:1
15   * tabWidth = 4                                                               //indent:1 exp:1
16   * throwsIndent = 4                                                           //indent:1 exp:1
17   *                                                                            //indent:1 exp:1
18   *                                                                            //indent:1 exp:1
19   */                                                                           //indent:1 exp:1
20  public class InputIndentationMethodCallLineWrap { //indent:0 exp:0
21  
22      void foo() { //indent:4 exp:4
23          new String() //indent:8 exp:8
24              .substring( //indent:12 exp:12
25                  0, 100 //indent:16 exp:16
26              ) //indent:12 exp:12
27              .substring( //indent:12 exp:12
28                  0, 50 //indent:16 exp:16
29              ); //indent:12 exp:12
30      } //indent:4 exp:4
31  
32      class InnerFoo { //indent:4 exp:4
33  
34      	void foo() { //indent:8 exp:8
35              new String() //indent:12 exp:12
36                  .substring( //indent:16 exp:16
37                      0, 100 //indent:20 exp:20
38                  ) //indent:16 exp:16
39                  .substring( //indent:16 exp:16
40                      0, 50 //indent:20 exp:20
41                  ); //indent:16 exp:16
42          } //indent:8 exp:8
43      } //indent:4 exp:4
44  
45      InnerFoo anon = new InnerFoo() { //indent:4 exp:4
46  
47      	void foo() { //indent:8 exp:8
48              new String() //indent:12 exp:12
49                  .substring( //indent:16 exp:16
50                      0, 100 //indent:20 exp:20
51                  ) //indent:16 exp:16
52                  .substring( //indent:16 exp:16
53                    0, 50 //indent:18 exp:20 warn
54                ); //indent:14 exp:16 warn
55          } //indent:8 exp:8
56      }; //indent:4 exp:4
57  
58      void chaining() { //indent:4 exp:4
59          toString() //indent:8 exp:8
60                  .getClass(); //indent:16 exp:16
61          toString().contains(//indent:8 exp:8
62              new String(//indent:12 exp:12
63                      "a" //indent:20 exp:20
64              )//indent:12 exp:12
65          ); //indent:8 exp:8
66      } //indent:4 exp:4
67  
68      <U> void chainingWithLambda(Function<?, ? extends U> f) { //indent:4 exp:4
69          this.<Function<List<?>, Boolean>> //indent:8 exp:8
70              chainingWithLambda( //indent:12 exp:12
71                  x -> //indent:16 exp:16
72                      y -> y.contains(0)); //indent:20 exp:20
73          this. //indent:8 exp:8
74              chainingWithLambda( //indent:12 exp:12
75              x -> x); //indent:12 exp:16 warn
76      } //indent:4 exp:4
77  } //indent:0 exp:0