@Test public void testSwitchBlockChainedOnChar() { String s = StatementBuilder.create() .declareVariable("c", char.class) .loadVariable("c") .switch_() .case_('a') .append(Stmt.loadStatic(System.class, "out").invoke("println", "a")) .append(Stmt.break_()) .finish() .case_('b') .append(Stmt.break_()) .finish() .default_() .append(Stmt.break_()) .finish() .toJavaString(); assertEquals("Failed to generate char switch block", SWITCH_BLOCK_CHAR_CHAINED, s); }
@Test public void testSwitchBlockOnInt() { String s = StatementBuilder.create() .declareVariable("n", int.class) .switch_(Stmt.loadVariable("n")) .case_(0) .append(Stmt.loadStatic(System.class, "out").invoke("println", "0")) .append(Stmt.loadStatic(System.class, "out").invoke("println", "break")) .append(Stmt.break_()) .finish() .case_(1) .append(Stmt.break_()) .finish() .default_() .append(Stmt.break_()) .finish() .toJavaString(); assertEquals("Failed to generate int switch block", SWITCH_BLOCK_INT, s); }
@Test public void testSwitchBlockChained() { String s = StatementBuilder.create() .declareVariable("n", int.class) .loadVariable("n") .switch_() .case_(0) .append(Stmt.loadStatic(System.class, "out").invoke("println", "0")) .append(Stmt.loadStatic(System.class, "out").invoke("println", "break")) .append(Stmt.break_()) .finish() .case_(1) .append(Stmt.break_()) .finish() .default_() .append(Stmt.break_()) .finish() .toJavaString(); assertEquals("Failed to generate chained switch block", SWITCH_BLOCK_INT, s); }
@Test public void testSwitchBlockChainedOnInvocation() { String s = StatementBuilder.create() .declareVariable("str", String.class) .loadVariable("str") .invoke("length") .switch_() .case_(0) .append(Stmt.loadStatic(System.class, "out").invoke("println", "0")) .append(Stmt.loadStatic(System.class, "out").invoke("println", "break")) .append(Stmt.break_()) .finish() .case_(1) .append(Stmt.break_()) .finish() .default_() .append(Stmt.break_()) .finish() .toJavaString(); assertEquals("Failed to generate switch block chained on invocation", SWITCH_BLOCK_CHAINED_INVOCATION, s); } }
@Test public void testSwitchBlockOnEnum() { Context c = Context.create().autoImport(); String s = StatementBuilder.create(c) .declareVariable("t", TestEnum.class) .switch_(Stmt.loadVariable("t")) .case_(TestEnum.A) .append(Stmt.loadStatic(System.class, "out").invoke("println", "A")) .append(Stmt.loadStatic(System.class, "out").invoke("println", "break")) .append(Stmt.break_()) .finish() .case_(TestEnum.B) .append(Stmt.break_()) .finish() .default_() .append(Stmt.break_()) .finish() .toJavaString(); assertEquals("Failed to generate enum switch block", SWITCH_BLOCK_ENUM, s); }
@Test public void testSwitchBlockWithoutDefaultBlock() { String s = StatementBuilder.create() .declareVariable("n", Integer.class) .switch_(Stmt.loadVariable("n")) .case_(0) .append(Stmt.loadStatic(System.class, "out").invoke("println", "0")) .append(Stmt.loadStatic(System.class, "out").invoke("println", "break")) .append(Stmt.break_()) .finish() .case_(1) .append(Stmt.break_()) .finish() .toJavaString(); assertEquals("Failed to generate Integer switch block without default", SWITCH_BLOCK_INTEGER_NO_DEFAULT, s); }
@Test public void testSwitchBlockWithFallThrough() { String s = StatementBuilder.create() .declareVariable("n", int.class) .switch_(Stmt.loadVariable("n")) .case_(0) .finish() .case_(1) .append(Stmt.loadStatic(System.class, "out").invoke("println", "1")) .append(Stmt.loadStatic(System.class, "out").invoke("println", "break")) .append(Stmt.break_()) .finish() .toJavaString(); assertEquals("Failed to generate int switch block with fallthrough", SWITCH_BLOCK_INT_FALLTHROUGH, s); }
@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); }
.append(target().invoke(setterMethod.getName(), Cast.to(setterMethod.getParameters()[0].getType().asBoxed(), Variable.get("value")))) .append(Stmt.break_()) .finish();
.append(target().invoke(setterMethod.getName(), Cast.to(setterMethod.getParameters()[0].getType().asBoxed(), Variable.get("value")))) .append(Stmt.break_()) .finish();
@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); }
.append(Stmt.loadClassMember(targetField).assignValue(Stmt.castTo(bindable, Stmt.loadVariable("value")))) .append(agent().loadField("target").assignValue(Stmt.loadClassMember(targetField))) .append(Stmt.break_()) .finish();
.append(Stmt.loadClassMember(targetField).assignValue(Stmt.castTo(bindable, Stmt.loadVariable("value")))) .append(agent().loadField("target").assignValue(Stmt.loadClassMember(targetField))) .append(Stmt.break_()) .finish();