package com.puppycrawl.tools.checkstyle.checks.indentation; //indent:0 exp:0

/**                                                                           //indent:0 exp:0
 * This test-input is intended to be checked using following configuration:   //indent:1 exp:1
 *                                                                            //indent:1 exp:1
 * arrayInitIndent = 4                                                        //indent:1 exp:1
 * basicOffset = 4                                                            //indent:1 exp:1
 * braceAdjustment = 0                                                        //indent:1 exp:1
 * caseIndent = 4                                                             //indent:1 exp:1
 * forceStrictCondition = false                                               //indent:1 exp:1
 * lineWrappingIndentation = 4                                                //indent:1 exp:1
 * tabWidth = 4                                                               //indent:1 exp:1
 * throwsIndent = 4                                                           //indent:1 exp:1
 *                                                                            //indent:1 exp:1
 *                                                                            //indent:1 exp:1
 */                                                                           //indent:1 exp:1
public class InputValidAssignIndent //indent:0 exp:0
{ //indent:0 exp:0
    void foo(String[] args) //indent:4 exp:4
    { //indent:4 exp:4
        int i = 1 + //indent:8 exp:8
            2 + //indent:12 exp:>=12
            3; //indent:12 exp:>=12
        String line = mIndentCheck[ //indent:8 exp:8
            getLineNo()]; //indent:12 exp:>=12
        String line1 = //indent:8 exp:8
            getLine(); //indent:12 exp:>=12
        line1 = //indent:8 exp:8
            getLine(); //indent:12 exp:>=12
        int i1  //indent:8 exp:8
            = //indent:12 exp:>=12
            1; //indent:12 exp:>=12
        i = 3; //indent:8 exp:8

        Integer brace = //indent:8 exp:8
            (candidate == SLIST) //indent:12 exp:>=12
            ? candidate : null; //indent:12 exp:>=12

        AnInterfaceFooWithALongName f = //indent:8 exp:8
            new AnInterfaceFooWithALongName() { //indent:12 exp:>=12
                public void bar() { //indent:16 exp:16
                } //indent:16 exp:16
            }; //indent:12 exp:12

        AnInterfaceFooWithALongName f1 //indent:8 exp:8
            = new AnInterfaceFooWithALongName() { //indent:12 exp:>=12
                public void bar() { //indent:16 exp:16
                } //indent:16 exp:16
            }; //indent:12 exp:12
// XXX: need to be fixed //indent:0 exp:0
//         function.lastArgument().candidate = parameters; //indent:0 exp:0
//         function.lastArgument().candidate //indent:0 exp:0
//             = //indent:0 exp:0
//             parameters; //indent:0 exp:0
        //     : add more testing //indent:8 exp:8
    } //indent:4 exp:4

    private interface AnInterfaceFooWithALongName { //indent:4 exp:4
        void bar(); //indent:8 exp:8
    } //indent:4 exp:4

    private static final int SLIST = 1; //indent:4 exp:4
    private static final int parameters = 1; //indent:4 exp:4
    int candidate = 0; //indent:4 exp:4
    private String[] mIndentCheck = null; //indent:4 exp:4
    private InputValidAssignIndent function = null; //indent:4 exp:4
    int getLineNo() { //indent:4 exp:4
        return 1; //indent:8 exp:8
    } //indent:4 exp:4
    String getLine() { //indent:4 exp:4
        return ""; //indent:8 exp:8
    } //indent:4 exp:4
    InputValidAssignIndent lastArgument() { //indent:4 exp:4
        return this; //indent:8 exp:8
    } //indent:4 exp:4
} //indent:0 exp:0
