package com.querydsl.sql;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import com.google.common.collect.Lists;
import com.querydsl.core.testutil.ReportingOnly;
import com.querydsl.core.types.Expression;
import com.querydsl.core.types.dsl.DateTimePath;
import com.querydsl.core.types.dsl.Expressions;
@Category(ReportingOnly.class)
public class DateArithmeticTest {
private String serialize(Expression<?> expr, SQLTemplates templates) {
SQLSerializer serializer = new SQLSerializer(new Configuration(templates));
serializer.handle(expr);
return serializer.toString();
}
@Test
public void test() {
List<SQLTemplates> list = Lists.newArrayList();
list.add(new CUBRIDTemplates());
list.add(new DerbyTemplates());
list.add(new H2Templates());
list.add(new HSQLDBTemplates());
list.add(new MySQLTemplates());
list.add(new OracleTemplates());
list.add(new PostgreSQLTemplates());
list.add(new SQLiteTemplates());
list.add(new SQLServerTemplates());
list.add(new SQLServer2005Templates());
list.add(new SQLServer2012Templates());
list.add(new TeradataTemplates());
List<Expression<?>> exprs = Lists.newArrayList();
DateTimePath<Date> path = Expressions.dateTimePath(Date.class, "date");
exprs.add(SQLExpressions.addYears(path, 2));
exprs.add(SQLExpressions.addMonths(path, 2));
exprs.add(SQLExpressions.addDays(path, 2));
exprs.add(SQLExpressions.addHours(path, 2));
exprs.add(SQLExpressions.addMinutes(path, 2));
exprs.add(SQLExpressions.addSeconds(path, 2));
for (SQLTemplates templates : list) {
System.out.println(templates.getClass().getSimpleName());
for (Expression<?> expr : exprs) {
System.err.println(serialize(expr, templates));
}
System.out.println();
}
}
}