package test.condition;
import org.apache.log4j.Logger;
public class ConditionCalls {
/*
* See the note at FirstPassMethodInstrumenter.visitJumpInsn()
* regarding initialization of static variables. This next static
* is intended to cover that condition.
*/
public static String whatEver = null;
private static final Logger logger = Logger.getLogger(ConditionCalls.class);
public void call(int i)
{
if (i>=5) //set CALL_CONDITION_LINE_NUMBER to this line number
{
try
{
logger.error("whatEver"); //set CALL_IGNORE_LINE_NUMBER to this line number
throw new RuntimeException();
}
catch (Throwable t)
{
//eat it
}
finally
{
System.out.println("true");
}
} else {
System.out.println("false");
}
}
public void callLookupSwitch(int branch)
{
switch (branch) //set LOOKUP_SWITCH_LINE_NUMBER to this line number
{
case 1:
System.out.println("1");
break;
case 5:
System.out.println("5");
break;
default:
System.out.println("default");
break;
}
}
public String callTableSwitch(int branch)
{
int[][] multiArray;
switch (branch) //set TABLE_SWITCH_LINE_NUMBER to this line number
{
case 0: return("0");
case 1: return("1");
case 2: return("2");
case 3: return("3");
case 4: return("4");
case 5: return("5");
case 6: return("6");
case 7: return("7");
case 8: return("8");
default: multiArray = new int[3][3]; return("" + multiArray[1][1]);
}
}
public void callMultiCondition(int a, int b, int c)
{
//The c++ is to get SecondPassMethodInstrumenter.visitIincInsn called.
if ((a == b) && (b >= 3) || (c++ < a)) //set MULTI_CONDITION_LINE_NUMBER to this line number
{
System.out.println("true");
}
}
public void callMultiCondition2(int a, int b, int c)
{
if ((a == b) && (b >= utilEcho(3)) || (c < a)) //set MULTI_CONDITION2_LINE_NUMBER to this line number
{
System.out.println("true");
}
}
int utilEcho(int number)
{
return number;
}
static
{
whatEver = "whatEver";
};
public static final int CALL_CONDITION_LINE_NUMBER = 17;
public static final int CALL_IGNORE_LINE_NUMBER = 21;
public static final int LOOKUP_SWITCH_LINE_NUMBER = 39;
public static final int TABLE_SWITCH_LINE_NUMBER = 56;
public static final int MULTI_CONDITION_LINE_NUMBER = 74;
public static final int MULTI_CONDITION2_LINE_NUMBER = 82;
}