public void Conditionals()
{
CodeTypeDeclaration class1 = new CodeTypeDeclaration("ClassWithMethod");
class1.IsClass = true;
CodeMemberMethod retMethod = new CodeMemberMethod();
retMethod.Name = "ReturnMethod";
retMethod.Attributes = MemberAttributes.Public | MemberAttributes.Static;
retMethod.ReturnType = new CodeTypeReference(typeof(int));
retMethod.Parameters.Add(new CodeParameterDeclarationExpression(typeof(int), "intInput"));
retMethod.Statements.Add(
new CodeConditionStatement(
new CodeBinaryOperatorExpression(
new CodeBinaryOperatorExpression(
new CodeVariableReferenceExpression("intInput"),
CodeBinaryOperatorType.LessThanOrEqual,
new CodePrimitiveExpression(3)),
CodeBinaryOperatorType.BooleanAnd,
new CodeBinaryOperatorExpression(
new CodeVariableReferenceExpression("intInput"),
CodeBinaryOperatorType.ValueEquality,
new CodePrimitiveExpression(2))),
new CodeStatement[] { CreateVariableIncrementExpression("intInput", 16) },
new CodeStatement[] { CreateVariableIncrementExpression("intInput", 1) }));
retMethod.Statements.Add(new CodeConditionStatement(
new CodeBinaryOperatorExpression(new CodeVariableReferenceExpression("intInput"), CodeBinaryOperatorType.LessThanOrEqual,
new CodePrimitiveExpression(10)),
new CodeAssignStatement(new CodeVariableReferenceExpression("intInput"),
new CodeBinaryOperatorExpression(new CodeVariableReferenceExpression("intInput"),
CodeBinaryOperatorType.Add, new CodePrimitiveExpression(11)))));
retMethod.Statements.Add(new CodeMethodReturnStatement(new CodeVariableReferenceExpression("intInput")));
class1.Members.Add(retMethod);
AssertEqual(class1,
@"public class ClassWithMethod {
public static int ReturnMethod(int intInput) {
if (((intInput <= 3)
&& (intInput == 2))) {
intInput = (intInput + 16);
}
else {
intInput = (intInput + 1);
}
if ((intInput <= 10)) {
intInput = (intInput + 11);
}
return intInput;
}
}");
}