package com.querydsl.core.support; import static org.junit.Assert.assertEquals; import javax.annotation.Nullable; import org.junit.Test; import com.querydsl.core.types.Expression; import com.querydsl.core.types.ExpressionUtils; import com.querydsl.core.types.Ops; import com.querydsl.core.types.Path; import com.querydsl.core.types.dsl.Expressions; public class ReplaceVisitorTest { private static final ReplaceVisitor<Void> visitor = new ReplaceVisitor<Void>() { public Expression<?> visit(Path<?> expr, @Nullable Void context) { if (expr.getMetadata().isRoot()) { return ExpressionUtils.path(expr.getType(), expr.getMetadata().getName() + "_"); } else { return super.visit(expr, context); } } }; @Test public void operation() { Expression<String> str = Expressions.stringPath(ExpressionUtils.path(Object.class, "customer"), "name"); Expression<String> str2 = Expressions.stringPath("str"); Expression<String> concat = Expressions.stringOperation(Ops.CONCAT, str, str2); assertEquals("customer.name + str", concat.toString()); assertEquals("customer_.name + str_", concat.accept(visitor, null).toString()); } @Test public void templateExpression() { Expression<String> str = Expressions.stringPath(ExpressionUtils.path(Object.class, "customer"), "name"); Expression<String> str2 = Expressions.stringPath("str"); Expression<String> concat = Expressions.stringTemplate("{0} + {1}", str, str2); assertEquals("customer.name + str", concat.toString()); assertEquals("customer_.name + str_", concat.accept(visitor, null).toString()); } }