@Override public StatementBuilder declareVariable(final String name, final Class<?> type, final Object initialization) { return declareVariable(Variable.create(name, type, initialization)); }
@Override public StatementBuilder declareVariable(final String name, final Class<?> type) { return declareVariable(Variable.create(name, type)); }
@Override public StatementBuilder declareFinalVariable(final String name, final Class<?> type) { return declareVariable(Variable.createFinal(name, type)); }
@Override public VariableDeclarationStart declareVariable(final Class<?> type) { return declareVariable(MetaClassFactory.get(type)); }
@Override public StatementBuilder declareVariable(final String name, final Class<?> type) { return declareVariable(Variable.create(name, type)); }
@Override public StatementBuilder declareVariable(final String name, final TypeLiteral<?> type) { return declareVariable(Variable.create(name, type)); }
@Override public StatementBuilder declareVariable(final String name, final Class<?> type, final Object initialization) { return declareVariable(Variable.create(name, type, initialization)); }
@Override public StatementBuilder declareFinalVariable(final String name, final MetaClass type, final Object initialization) { return declareVariable(Variable.createFinal(name, type, initialization)); }
@Override public StatementBuilder declareFinalVariable(final String name, final Class<?> type) { return declareVariable(Variable.createFinal(name, type)); }
@Override public StatementBuilder declareFinalVariable(final String name, final TypeLiteral<?> type) { return declareVariable(Variable.createFinal(name, type)); }
@Override public StatementBuilder declareFinalVariable(final String name, final TypeLiteral<?> type, final Object initialization) { return declareVariable(Variable.createFinal(name, type, initialization)); }
@Override public StatementBuilder declareVariable(final String name, final TypeLiteral<?> type, final Object initialization) { return declareVariable(Variable.create(name, type, initialization)); }
@Override public StatementBuilder declareFinalVariable(final String name, final TypeLiteral<?> type, final Object initialization) { return declareVariable(Variable.createFinal(name, type, initialization)); }
@Override public StatementBuilder declareFinalVariable(final String name, final Class<?> type, final Object initialization) { return declareVariable(Variable.createFinal(name, type, initialization)); }
@Test public void testAssignArrayValueWithVariableIndexes() { final String s = StatementBuilder.create() .declareVariable("twoDimArray", String[][].class) .declareVariable("i", int.class) .declareVariable("j", int.class) .loadVariable("twoDimArray", Variable.get("i"), Variable.get("j")) .assignValue("test") .toJavaString(); assertEquals("Failed to generate array assignment", "twoDimArray[i][j] = \"test\";", s); }
@Test public void testInvokeWithNestedParameterizedListAndVariableReturnType() { String s = StatementBuilder.create(Context.create().autoImport()) .declareVariable("n", int.class) .declareVariable("list", new TypeLiteral<List<List<Map<String, Integer>>>>() { }) .declareVariable("str", String.class, StatementBuilder.create().invokeStatic(Foo.class, "bar", Variable.get("n"), Variable.get("list"))) .toJavaString(); assertEquals("Failed to generate method invocation with variable return type inferred from nested List<T>", "String str = Foo.bar(n, list);", s); }
@Test public void testInvokeWithParameterizedListAndVariableReturnType() { String s = StatementBuilder.create(Context.create().autoImport()) .declareVariable("list", new TypeLiteral<List<String>>() { }) .declareVariable("str", String.class, StatementBuilder.create().invokeStatic(Foo.class, "bar", Variable.get("list"))) .toJavaString(); assertEquals("Failed to generate method invocation with variable return type inferred from List<T>", "String str = Foo.bar(list);", s); }
@Test public void testInvokeWithParameterizedMapAndVariableReturnType() { String s = StatementBuilder.create(Context.create().autoImport()) .declareVariable("map", new TypeLiteral<Map<String, Integer>>() { }) .declareVariable("val", Integer.class, StatementBuilder.create().invokeStatic(Foo.class, "bar", Variable.get("map"))) .toJavaString(); assertEquals("Failed to generate method invocation with variable return type inferred from Map<K, V>", "Integer val = Foo.bar(map);", s); }
@Test public void testInvokeWithVariableReturnType() { String s = StatementBuilder.create(Context.create().autoImport()) .declareVariable("s", String.class) .declareVariable("str", String.class, StatementBuilder.create().invokeStatic(Foo.class, "foo", Variable.get("s"))) .toJavaString(); assertEquals("Failed to generate method invocation using variable return type", "String str = Foo.foo(s);", 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); }