@Test public void testIfBlockWithInvalidExpression() { try { StatementBuilder.create() .declareVariable("str", String.class) .declareVariable("str2", String.class) .loadVariable("str") .if_(BooleanOperator.GreaterThan, Variable.get("str2")).finish() .toJavaString(); fail("Expected InvalidExpressionException"); } catch (InvalidExpressionException e) { // expected assertTrue("Wrong exception thrown", e.getMessage().contains(String.class.getName())); } }
@Test public void testIfBlockWithNullCheck() { String s = StatementBuilder.create() .declareVariable("str", String.class) .loadVariable("str") .if_(BooleanOperator.NotEquals, null) .finish() .toJavaString(); assertEquals("Failed to generate if block using a null rhs", EMPTY_IF_BLOCK_NULL_RHS, s); }
@Test public void testEmptyIfBlockUsingLiteralRhs() { String s = StatementBuilder.create() .declareVariable("n", int.class) .loadVariable("n") .if_(BooleanOperator.Equals, 1) .finish().toJavaString(); assertEquals("Failed to generate empty if block using a literal rhs", EMPTY_IF_BLOCK_LITERAL_RHS, s); }
@Test public void testIfBlockWithInstanceOfExpression() { String s = StatementBuilder.create() .declareVariable("str", String.class) .loadVariable("str") .if_(BooleanOperator.InstanceOf, MetaClassFactory.getAsStatement(String.class)).finish() .toJavaString(); assertEquals("Failed to generate empty if block using an instance of expression", EMPTY_IF_BLOCK_INSTANCE_OF_RHS, s); }
@Test public void testNestedIfElseIfBlockUsingRhs() { Context c = ContextBuilder.create().addVariable("n", Integer.class).addVariable("m", Integer.class).getContext(); String s = StatementBuilder.create(c) .loadVariable("n") .if_(BooleanOperator.GreaterThan, Variable.get("m")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(0)) .finish() .else_() .append(StatementBuilder.create(c).loadVariable("m") .if_(BooleanOperator.GreaterThan, Variable.get("n")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(1)) .finish() .else_() .append(StatementBuilder.create(c).loadVariable("n").assignValue(2)) .finish() ) .finish().toJavaString(); assertEquals("Failed to generate if-else-if-else block using rhs", IF_ELSEIF_ELSE_BLOCK_RHS_NESTED, s); }
@Test public void testIfElseBlockUsingRhs() { String s = StatementBuilder.create() .declareVariable("n", Integer.class) .declareVariable("m", Integer.class) .loadVariable("n") .if_(BooleanOperator.GreaterThan, Variable.get("m")) ._(Stmt.declareVariable(Integer.class).named("n").initializeWith(0)) .finish() .else_() ._(Stmt.declareVariable(Integer.class).named("n").initializeWith(1)) .finish().toJavaString(); assertEquals("Failed to generate empty if block using a rhs", IF_ELSE_BLOCK_RHS, s); }
@Test public void testLoopWithInvalidLabel() { try { StatementBuilder.create() .declareVariable("i", Integer.class, 0) .loadVariable("i") .if_(BooleanOperator.GreaterThan, 100) .append(Stmt.label("label")) .append(Stmt .for_(Stmt.loadVariable("i").assignValue(0), Bool.expr(Variable.get("i"), BooleanOperator.LessThan, 100), Stmt.loadVariable("i").assignValue(AssignmentOperator.PreIncrementAssign, 1)) .append(Stmt.continue_("undefinedlabel")) .finish()) .finish() .toJavaString(); fail("expected OutOfScopeException"); } catch (OutOfScopeException e) { // expected } } }
@Test public void testLoopWithBreak() { String s = StatementBuilder.create() .declareVariable("i", Integer.class, 0) .loadVariable("i") .if_(BooleanOperator.GreaterThan, 100) .append(Stmt .for_(Stmt.loadVariable("i").assignValue(0), Bool.expr(Variable.get("i"), BooleanOperator.LessThan, 100), Stmt.loadVariable("i").assignValue(AssignmentOperator.PreIncrementAssign, 1)) .append(Stmt .if_(Bool.expr(Variable.get("i"), BooleanOperator.Equals, 50)) .append(Stmt.break_()) .finish()) .finish()) .finish() .toJavaString(); assertEquals("Failed to generate loop with continue", LOOP_WITH_BREAK, s); }
@Test public void testLoopWithContinue() { String s = StatementBuilder.create() .declareVariable("i", Integer.class, 0) .loadVariable("i") .if_(BooleanOperator.GreaterThan, 100) .append(Stmt .for_(Stmt.loadVariable("i").assignValue(0), Bool.expr(Variable.get("i"), BooleanOperator.LessThan, 100), Stmt.loadVariable("i").assignValue(AssignmentOperator.PreIncrementAssign, 1)) .append( Stmt.if_(Bool.expr(Variable.get("i"), BooleanOperator.Equals, 50)) .append(Stmt.continue_()) .finish()) .finish()) .finish() .toJavaString(); assertEquals("Failed to generate loop with continue", LOOP_WITH_CONTINUE, s); }
@Test public void testLoopWithContinueAndLabel() { String s = StatementBuilder.create() .declareVariable("i", Integer.class, 0) .loadVariable("i") .if_(BooleanOperator.GreaterThan, 100) .append(Stmt.label("label")) .append(Stmt .for_(Stmt.loadVariable("i").assignValue(0), Bool.expr(Variable.get("i"), BooleanOperator.LessThan, 100), Stmt.loadVariable("i").assignValue(AssignmentOperator.PreIncrementAssign, 1)) .append(Stmt .if_(Bool.expr(Variable.get("i"), BooleanOperator.Equals, 50)) .append(Stmt.continue_("label")) .finish()) .finish()) .finish() .toJavaString(); assertEquals("Failed to generate loop with continue and label", LOOP_WITH_CONTINUE_AND_LABEL, s); }
@Test public void testLoopWithBreakAndLabel() { String s = StatementBuilder.create() .declareVariable("i", Integer.class, 0) .loadVariable("i") .if_(BooleanOperator.GreaterThan, 100) .append(Stmt.label("label")) .append(Stmt .for_(Stmt.loadVariable("i").assignValue(0), Bool.expr(Variable.get("i"), BooleanOperator.LessThan, 100), Stmt.loadVariable("i").assignValue(AssignmentOperator.PreIncrementAssign, 1)) .append(Stmt .if_(Bool.expr(Variable.get("i"), BooleanOperator.Equals, 50)) .append(Stmt.break_("label")) .finish()) .finish()) .finish() .toJavaString(); assertEquals("Failed to generate loop with continue and label", LOOP_WITH_BREAK_AND_LABEL, s); }
@Test public void testIfElseIfBlockUsingRhsAndElseifKeyword() { Context c = ContextBuilder.create().addVariable("n", Integer.class).addVariable("m", Integer.class).getContext(); String s = StatementBuilder.create(c) .loadVariable("n") .if_(BooleanOperator.GreaterThan, Variable.get("m")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(0)) .finish() .elseif_(StatementBuilder.create(c).loadVariable("m"), BooleanOperator.GreaterThan, Variable.get("n")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(1)) .finish() .elseif_(StatementBuilder.create(c).loadVariable("m"), BooleanOperator.Equals, Variable.get("n")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(2)) .finish() .else_() .append(StatementBuilder.create(c).loadVariable("n").assignValue(3)) .finish().toJavaString(); assertEquals("Failed to generate if - else if - else block using rhs", IF_ELSEIF_ELSE_BLOCK_RHS, s); }