package com.taobao.tddl.qatest.matrix.select.function;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
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 SelectCharacterFunctionTest extends BaseMatrixTestCase {
@Parameters(name = "{index}:table={0}")
public static List<String[]> prepareData() {
return Arrays.asList(ExecuteTableName.normaltblTable(dbType));
}
public SelectCharacterFunctionTest(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 concatTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select * from " + normaltblTableName + " where name =concat(?,?)";
List<Object> param = new ArrayList<Object>();
param.add("zhuo");
param.add("xue");
String[] columnParam = { "ID", "GMT_CREATE", "NAME", "FLOATCOL", "GMT_TIMESTAMP", "GMT_DATETIME" };
selectContentSameAssert(sql, columnParam, param);
sql = "select * from " + normaltblTableName + " where name like concat (?,?,?)";
param.clear();
param.add("zhu");
param.add("o");
param.add("xue");
selectContentSameAssert(sql, columnParam, param);
}
}
/**
* concat加上任意参数
*/
@Test
public void concatArbitrarilyTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select * from " + normaltblTableName + " where name =concat(?,?)";
List<Object> param = new ArrayList<Object>();
param.add("%uo");
param.add("xu_");
String[] columnParam = { "ID", "GMT_CREATE", "NAME", "FLOATCOL", "GMT_TIMESTAMP", "GMT_DATETIME" };
selectContentSameAssert(sql, columnParam, param);
}
}
@Test
public void ifnullTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select ifnull(name,pk) as notNullName from " + normaltblTableName;
String[] columnParam = { "notNullName" };
selectContentSameAssert(sql, columnParam, Collections.EMPTY_LIST);
sql = "replace into " + normaltblTableName + " (pk,name) values (10,null)";
execute(sql, null);
sql = "select ifnull(name,'ni') as notNullName from " + normaltblTableName;
selectContentSameAssert(sql, columnParam, Collections.EMPTY_LIST);
sql = "select ifnull(name,'pk') as notNullName from " + normaltblTableName;
selectContentSameAssert(sql, columnParam, Collections.EMPTY_LIST);
}
}
@Test
public void ifnullTestTypeNotSame() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "select ifnull(name,pk) as notNullName from " + normaltblTableName;
String[] columnParam = { "notNullName" };
selectContentSameAssert(sql, columnParam, Collections.EMPTY_LIST);
}
}
@Test
public void ifnullRoundTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = "replace into " + normaltblTableName + " (pk,floatCol) values (10,null)";
execute(sql, null);
sql = "select ifnull(round(floatCol/4,4),0) as a from " + normaltblTableName;
String[] columnParam = { "a" };
selectContentSameAssert(sql, columnParam, Collections.EMPTY_LIST);
}
}
@Test
public void quoteTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = String.format("replace into %s (pk,name) values (10,quote(?))", normaltblTableName);
List<Object> param = new ArrayList<Object>();
param.add("'zhuoxue'");
execute(sql, param);
sql = String.format("select * from %s where name =quote(?)", normaltblTableName);
String[] columnParam = { "ID", "GMT_CREATE", "NAME", "FLOATCOL", "GMT_TIMESTAMP", "GMT_DATETIME" };
selectContentSameAssert(sql, columnParam, param);
}
}
@Test
public void convTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = String.format("select conv(id,16,2) as a from %s where pk=1", normaltblTableName);
String[] columnParam = { "a" };
selectContentSameAssert(sql, columnParam, null);
}
}
@Test
public void asciiTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = String.format("select ASCII(name) as a from %s", normaltblTableName);
String[] columnParam = { "a" };
selectContentSameAssert(sql, columnParam, null);
}
}
@Test
public void bit_lengthTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = String.format("select BIT_LENGTH(name) as a from %s", normaltblTableName);
String[] columnParam = { "a" };
selectContentSameAssert(sql, columnParam, null);
}
}
@Test
public void bitTest() throws Exception {
if (!normaltblTableName.startsWith("ob")) {
String sql = String.format("select bin(name) as a from %s", normaltblTableName);
String[] columnParam = { "a" };
selectContentSameAssert(sql, columnParam, null);
}
}
}