Clover Coverage Report - Checkstyle
Coverage timestamp: Fri May 9 2008 10:48:13 EST
../../../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
5   93   5   1
0   32   1   5
5     1  
1    
 
  CaseHandler       Line # 29 100% 1.0
5 5 5 5 1
 
  (3)
 
1    ////////////////////////////////////////////////////////////////////////////////
2    // checkstyle: Checks Java source code for adherence to a set of rules.
3    // Copyright (C) 2001-2005 Oliver Burn
4    //
5    // This library is free software; you can redistribute it and/or
6    // modify it under the terms of the GNU Lesser General Public
7    // License as published by the Free Software Foundation; either
8    // version 2.1 of the License, or (at your option) any later version.
9    //
10    // This library is distributed in the hope that it will be useful,
11    // but WITHOUT ANY WARRANTY; without even the implied warranty of
12    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    // Lesser General Public License for more details.
14    //
15    // You should have received a copy of the GNU Lesser General Public
16    // License along with this library; if not, write to the Free Software
17    // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18    ////////////////////////////////////////////////////////////////////////////////
19    package com.puppycrawl.tools.checkstyle.checks.indentation;
20   
21    import com.puppycrawl.tools.checkstyle.api.DetailAST;
22    import com.puppycrawl.tools.checkstyle.api.TokenTypes;
23   
24    /**
25    * Handler for case statements.
26    *
27    * @author jrichard
28    */
 
29    public class CaseHandler extends ExpressionHandler
30    {
31    /**
32    * The child elements of a case expression.
33    */
34    private final int[] mCaseChildren = new int[] {
35    TokenTypes.LITERAL_CASE,
36    TokenTypes.LITERAL_DEFAULT,
37    };
38   
39    /**
40    * Construct an instance of this handler with the given indentation check,
41    * abstract syntax tree, and parent handler.
42    *
43    * @param aIndentCheck the indentation check
44    * @param aExpr the abstract syntax tree
45    * @param aParent the parent handler
46    */
 
47  25 toggle public CaseHandler(IndentationCheck aIndentCheck,
48    DetailAST aExpr, ExpressionHandler aParent)
49    {
50  25 super(aIndentCheck, "case", aExpr, aParent);
51    }
52   
53    /**
54    * Compute the indentation amount for this handler.
55    *
56    * @return the expected indentation amount
57    */
 
58  25 toggle protected IndentLevel getLevelImpl()
59    {
60  25 return new IndentLevel(getParent().getLevel(),
61    getIndentCheck().getCaseIndent());
62    }
63   
64    /**
65    * Check the indentation of the case statement.
66    */
 
67  25 toggle private void checkCase()
68    {
69  25 checkChildren(getMainAst(), mCaseChildren, getLevel(), true, false);
70    }
71   
72    /**
73    * Indentation level suggested for a child element. Children don't have
74    * to respect this, but most do.
75    *
76    * @param aChild child AST (so suggestion level can differ based on child
77    * type)
78    *
79    * @return suggested indentation for child
80    */
 
81  33 toggle public IndentLevel suggestedChildLevel(ExpressionHandler aChild)
82    {
83  33 return getLevel();
84    }
85   
86    /**
87    * Check the indentation of the expression we are handling.
88    */
 
89  25 toggle public void checkIndentation()
90    {
91  25 checkCase();
92    }
93    }