methodBody = Stmt.create(subContext).nestedCall(makeSnapshotAsSubclass( retval, method.getReturnType(), method.getReturnType(), methodBodyCallback, typesToRecurseOn, existingSnapshots, unfinishedSnapshots)).returnValue();
methodBody = Stmt.create(subContext).nestedCall(makeSnapshotAsSubclass( retval, method.getReturnType(), method.getReturnType(), methodBodyCallback, typesToRecurseOn, existingSnapshots, unfinishedSnapshots)).returnValue();
final Statement subscribeStatement = Stmt.create(ctx).invokeStatic(CDI.class, subscribeMethod, parmClassName, callBackBlock.finish().finish());
@Test public void testAssignField() { final String s = Stmt.create(Context.create().autoImport()).nestedCall( Stmt.newObject(Foo.class)).loadField("bar").loadField("name").assignValue("test").toJavaString(); assertEquals("failed to generate nested field assignment", "new Foo().bar.name = \"test\";", s); }
@Test public void testAssignInvalidField() { try { final String s = Stmt.create(Context.create().autoImport()).nestedCall( Stmt.newObject(Foo.class)) .loadField("invalid") .assignValue("test") .toJavaString(); fail("expected UndefinedFieldException"); } catch (UndefinedFieldException e) { // expected } }
BlockBuilder<ElseBlockBuilder> ifBody = Stmt.create().if_( BooleanExpressionBuilder.create(Stmt.loadVariable(stateVar)));
BlockBuilder<ElseBlockBuilder> ifBody = Stmt.create().if_( BooleanExpressionBuilder.create(Stmt.loadVariable(stateVar)));
@Test public void testIfBlockUnchainedWithExpressionUsingNegation() { Context ctx = Context.create().addVariable("a", boolean.class) .addVariable("b", boolean.class); String s = Stmt.create(ctx) .if_(Bool.expr(Stmt.loadVariable("a"), BooleanOperator.And, Bool.expr(Stmt.loadVariable("b")).negate())) .append(Stmt.loadStatic(System.class, "out").invoke("println", Refs.get("a"))) .finish() .toJavaString(); assertEquals("Failed to generate if block using nested boolean expressions", IF_BLOCK_UNCHAINED_WITH_EXPRESSION_USING_NEGATION, s); }
@Test public void testAddVariableWithImplicitTypeConversion() { Context ctx = ContextBuilder.create().addVariable("n", Integer.class, "10").getContext(); VariableReference n = ctx.getVariable("n"); assertEquals("Wrong variable name", "n", n.getName()); Assert.assertEquals("Wrong variable type", MetaClassFactory.get(Integer.class), n.getType()); Assert.assertEquals("Wrong variable value", LiteralFactory.getLiteral(10), n.getValue()); try { Stmt.create(ContextBuilder.create().addVariable("n", Integer.class, "abc").getContext()).toJavaString(); fail("Expected InvalidTypeException"); } catch (InvalidTypeException ive) { // expected assertTrue(ive.getCause() instanceof NumberFormatException); } }
final String generated = Stmt.create(ctx).load(personCollection).toJavaString();
@Test public void testIfBlockUnchainedWithExpressionUsingArithmetics() { Context ctx = Context.create() .addVariable("a", Integer.class) .addVariable("b", Integer.class) .addVariable("c", Float.class); String s = Stmt.create(ctx) .if_(Bool.expr( Arith.expr( Arith.expr(Stmt.loadVariable("a"), ArithmeticOperator.Addition, Stmt.loadVariable("b")), ArithmeticOperator.Division, Stmt.loadVariable("c")), BooleanOperator.GreaterThan, 1)) .append(Stmt.loadStatic(System.class, "out").invoke("println", Refs.get("a"))) .finish() .toJavaString(); assertEquals("Failed to generate if block using arithmetic expressions", IF_BLOCK_UNCHAINED_WITH_EXPRESSION_USING_ARITHMETICS, s); } }
@Test public void testIfBlockUnchainedWithNestedExpressions() { Context ctx = Context.create().addVariable("a", boolean.class) .addVariable("b", boolean.class); String s = Stmt.create(ctx) .if_(Bool.expr( Bool.expr("foo", BooleanOperator.Equals, "bar"), BooleanOperator.Or, Bool.expr( Bool.expr("cat", BooleanOperator.Equals, "dog"), BooleanOperator.And, Bool.expr("girl", BooleanOperator.NotEquals, "boy")))) .finish() .elseif_(Bool.expr(Stmt.loadVariable("a"), BooleanOperator.And, Stmt.loadVariable("b"))) .append(Stmt.loadStatic(System.class, "out").invoke("println", Refs.get("a"))) .finish() .toJavaString(); assertEquals("Failed to generate if block using nested boolean expressions", IF_ELSEIF_BLOCK_UNCHAINED_NESTED_EXPRESSIONS, s); }