package cn.org.rapid_framework.jdbc.dialect;
import junit.framework.Assert;
import org.junit.Test;
import static org.junit.Assert.*;
public class OracleDialectTest {
OracleDialect dialect = new OracleDialect();
@Test
public void test() {
String sql = dialect.getLimitString("select * from user", 10, 100);
assertEquals("select * from ( select row_.*, rownum rownum_ from ( select * from user ) row_ ) where rownum_ <= 10+100 and rownum_ > 10",sql);
System.out.println(sql);
String sql0limit = dialect.getLimitString("select * from user", 0, 100);
assertEquals("select * from ( select * from user ) where rownum <= 100",sql0limit);
System.out.println(sql0limit);
String forUpdateSql = dialect.getLimitString("select * from user for update", 10, 100);
assertEquals("select * from ( select row_.*, rownum rownum_ from ( select * from user ) row_ ) where rownum_ <= 10+100 and rownum_ > 10 for update",forUpdateSql);
System.out.println(forUpdateSql);
}
@Test
public void getLimitStringWithPlaceHolader() {
String OFFSET = ":offset";
String LIMIT = ":limit";
Assert.assertEquals("select * from ( select * from user ) where rownum <= :limit", dialect.getLimitString("select * from user", 0,OFFSET, 0,LIMIT));
Assert.assertEquals("select * from ( select * from user ) where rownum <= :limit", dialect.getLimitString("select * from user", 0,OFFSET,12,LIMIT));
Assert.assertEquals("select * from ( select row_.*, rownum rownum_ from ( select * from user ) row_ ) where rownum_ <= :offset+:limit and rownum_ > :offset", dialect.getLimitString("select * from user", 12, OFFSET,0,LIMIT));
Assert.assertEquals("select * from ( select row_.*, rownum rownum_ from ( select * from user ) row_ ) where rownum_ <= :offset+:limit and rownum_ > :offset", dialect.getLimitString("select * from user", 12, OFFSET, 34,LIMIT));
}
@Test
public void getLimitString() {
String sql = new OracleDialect().getLimitString("select * from user", 10, 100);
assertEquals("select * from ( select row_.*, rownum rownum_ from ( select * from user ) row_ ) where rownum_ <= 10+100 and rownum_ > 10",sql);
}
}