package com.querydsl.sql;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.querydsl.core.types.Ops;
public class TeradataTemplatesTest extends AbstractSQLTemplatesTest {
@Override
protected SQLTemplates createTemplates() {
return new TeradataTemplates();
}
@Test
public void limit() {
query.from(survey1).limit(5);
assertEquals("from SURVEY survey1 " +
"qualify row_number() over (order by 1) <= ?", query.toString());
}
@Test
public void offset() {
query.from(survey1).offset(5);
assertEquals("from SURVEY survey1 " +
"qualify row_number() over (order by 1) > ?", query.toString());
}
@Test
public void limit_offset() {
query.from(survey1).limit(5).offset(10);
assertEquals("from SURVEY survey1 " +
"qualify row_number() over (order by 1) between ? and ?", query.toString());
}
@Test
public void orderBy_limit() {
query.from(survey1).orderBy(survey1.name.asc()).limit(5);
assertEquals("from SURVEY survey1 " +
"order by survey1.NAME asc " +
"qualify row_number() over (order by survey1.NAME asc) <= ?", query.toString());
}
@Test
public void precedence() {
// +, - (unary)
int p1 = getPrecedence(Ops.NEGATE);
// ** (exponentation)
// * / MOD
int p2 = getPrecedence(Ops.MULT, Ops.DIV, Ops.MOD);
// +, - (binary)
int p3 = getPrecedence(Ops.ADD, Ops.SUB);
// concat
int p4 = getPrecedence(Ops.CONCAT);
// EQ, NE, GT, LE, LT, GE, IN, NOT IN, BEWEEN, LIKE
int p5 = getPrecedence(Ops.EQ, Ops.NE, Ops.GT, Ops.LT, Ops.GOE, Ops.LOE, Ops.IN, Ops.NOT_IN,
Ops.BETWEEN, Ops.LIKE, Ops.LIKE_ESCAPE);
// NOT
int p6 = getPrecedence(Ops.NOT);
// AND
int p7 = getPrecedence(Ops.AND);
// OR
int p8 = getPrecedence(Ops.OR);
assertTrue(p1 < p2);
assertTrue(p2 < p3);
assertTrue(p3 < p4);
assertTrue(p4 < p5);
assertTrue(p5 < p6);
assertTrue(p6 < p7);
assertTrue(p7 < p8);
}
}