package com.taobao.tddl.qatest.matrix.select.function;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
import com.taobao.tddl.qatest.BaseMatrixTestCase;
import com.taobao.tddl.qatest.BaseTestCase;
import com.taobao.tddl.qatest.ExecuteTableName;
import com.taobao.tddl.qatest.util.EclipseParameterized;
@RunWith(EclipseParameterized.class)
public class SelectDateFunctionTest extends BaseMatrixTestCase {
@Parameters(name = "{index}:table={0}")
public static List<String[]> prepareData() {
return Arrays.asList(ExecuteTableName.normaltblTable(dbType));
}
public SelectDateFunctionTest(String tableName){
BaseTestCase.normaltblTableName = tableName;
}
@Before
public void prepare() throws Exception {
con = getConnection();
andorCon = us.getConnection();
normaltblPrepare(0, 20);
}
@After
public void destory() throws Exception {
psConRcRsClose(rc, rs);
}
@Test
public void to_daysTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select id,name from " + normaltblTableName
+ " where TO_DAYS(gmt_create)-TO_DAYS('2011-05-15')>30";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "id", "name" };
assertContentSame(rs, rc, columnParam1);
sql = "select TO_DAYS(gmt_create) as da,name from " + normaltblTableName + " where pk=1";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam2 = { "da", "name" };
assertContentSame(rs, rc, columnParam2);
}
}
@Test
public void from_daysTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select FROM_DAYS(TO_DAYS(gmt_create)) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void dayofweekTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select DAYOFWEEK(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void weekdayTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select WEEKDAY(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void dayofyearTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select DAYOFYEAR(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void monthTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select MONTH(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void monthnameTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select MONTHNAME(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void quarterTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select QUARTER(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void weekTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select WEEK(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void timeTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String[] columnParam1 = { "da" };
String sql = "select YEAR(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
assertContentSame(rs, rc, columnParam1);
sql = "select HOUR(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
assertContentSame(rs, rc, columnParam1);
sql = "select MINUTE(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
assertContentSame(rs, rc, columnParam1);
sql = "select SECOND(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void daynameTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select DAYNAME(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void dayofmonthTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select DAYOFMONTH(gmt_create) as da from " + normaltblTableName + " where pk=0";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void date_subTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select DATE_SUB(gmt_create,INTERVAL 31 DAY) as da from " + normaltblTableName
+ " where pk=1";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
public void date_subTestBindVal() throws Exception {
String sql = "select DATE_SUB(gmt_create,INTERVAL ? DAY) as da from " + normaltblTableName + " where pk=1";
List<Object> param = new ArrayList<Object>();
param.add(31);
rs = mysqlQueryData(sql, param);
rc = andorQueryData(sql, param);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
@Test
public void date_addTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select DATE_ADD(gmt_create,INTERVAL 31 DAY) as da from " + normaltblTableName + " where pk=1";
String[] columnParam = { "da" };
selectContentSameAssert(sql, columnParam, null);
sql = "select ADDDATE(gmt_create,INTERVAL 31 DAY) as da from " + normaltblTableName + " where pk=1";
selectContentSameAssert(sql, columnParam, null);
sql = "select * from " + normaltblTableName + " where gmt_create > DATE_ADD(Date(?),INTERVAL 31 DAY)";
List<Object> param = new ArrayList<Object>();
param.add("2011-5-5");
String[] columnParam1 = { "name", "id", "pk" };
selectContentSameAssert(sql, columnParam1, param);
sql = "select * from " + normaltblTableName + " where gmt_create > ADDDATE(Date(?),INTERVAL 31 DAY)";
selectContentSameAssert(sql, columnParam1, param);
}
}
@Test
public void TO_DAYSTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select TO_DAYS(gmt_create) as da from " + normaltblTableName + " where pk=1";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void addtimeTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select ADDTIME(gmt_create,'1 1:1:1.000002') as da from " + normaltblTableName
+ " where pk=1";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
@Test
public void dateTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select DATE(gmt_create) as da from " + normaltblTableName + " where pk=1";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "da" };
assertContentSame(rs, rc, columnParam1);
}
}
/**
* date函数通过绑定变量传值进去
*/
@Test
public void dateWithParamTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select * from " + normaltblTableName + " where gmt_create >=Date(?)";
List<Object> param = new ArrayList<Object>();
param.add("2011-1-1");
String[] columnParam = { "name", "pk", "id" };
selectContentSameAssert(sql, columnParam, param);
}
}
// @Test
// public void str_to_dateTest() throws Exception {
// String sql = "select * from " + normaltblTableName +
// " where gmt_create between str_to_date(?,'%y-%m-%d')" +
// " and str_to_date(?,'%y-%m-%d')";
// List<Object> param =new ArrayList<Object>();
// param.add("2001-1-1");
// param.add("2013-1-1");
// String [] columnParam={"name","pk","id"};
// selectContentSameAssert(sql, columnParam, param);
// }
@Test
public void nowTest() throws Exception {
String sql = "select id,now() as dd from " + normaltblTableName + " where pk=1";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam1 = { "dd", "id" };
assertContentSame(rs, rc, columnParam1);
sql = "select * from " + normaltblTableName + " where gmt_create = now()";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParam2 = { "gmt_create", "id" };
assertContentSame(rs, rc, columnParam2);
sql = "select * from " + normaltblTableName + " where now()>gmt_create";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
assertContentSame(rs, rc, columnParam2);
sql = "select * from " + normaltblTableName + " where gmt_timestamp = now()";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParamTimestamp = { "gmt_timestamp", "id" };
assertContentSame(rs, rc, columnParamTimestamp);
sql = "select * from " + normaltblTableName + " where now()<=gmt_timestamp";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
assertContentSame(rs, rc, columnParamTimestamp);
sql = "select * from " + normaltblTableName + " where gmt_datetime = now()";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
String[] columnParamDatetime = { "gmt_datetime", "id" };
assertContentSame(rs, rc, columnParamDatetime);
sql = "select * from " + normaltblTableName + " where now()>=gmt_datetime";
rs = mysqlQueryData(sql, null);
rc = andorQueryData(sql, null);
assertContentSame(rs, rc, columnParamDatetime);
if (!normaltblTableName.startsWith("ob")) {
sql = "select * from " + normaltblTableName + " where gmt_create >( now()- INTERVAL ? day )";
List<Object> param = new ArrayList<Object>();
param.add(12);
rs = mysqlQueryData(sql, param);
rc = andorQueryData(sql, param);
assertContentSame(rs, rc, columnParamDatetime);
}
}
}