package com.taobao.tddl.qatest.matrix.select; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.junit.Assert; 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.util.EclipseParameterized; import com.taobao.tddl.qatest.ExecuteTableName; /** * Comment for LocalServerSelectTest * <p/> * Author By: yaolingling.pt Created Date: 2012-2-17 上午11:30:55 */ @RunWith(EclipseParameterized.class) public class SelectTest extends BaseMatrixTestCase { @Parameters(name = "{index}:table={0}") public static List<String[]> prepare() { return Arrays.asList(ExecuteTableName.studentTable(dbType)); } public SelectTest(String studentTableName){ BaseTestCase.studentTableName = studentTableName; } @Before public void initData() throws Exception { andorUpdateData("delete from " + studentTableName, null); mysqlUpdateData("delete from " + studentTableName, null); } @Test public void selectAllFieldTest() throws Exception { andorUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); mysqlUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); String sql = "select * from " + studentTableName + " where id=" + RANDOM_ID; String[] columnParam = { "NAME", "SCHOOL" }; selectOrderAssert(sql, columnParam, Collections.EMPTY_LIST); } /** * 查询的列带为*,并且和其他函数操作一起查询 */ @Test public void selectAllFieldWithFuncTest() throws Exception { andorUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); mysqlUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); String sql = "select *,count(*) from " + studentTableName + " where id=" + RANDOM_ID; String[] columnParam = { "NAME", "SCHOOL", "id", "count(*)" }; selectOrderAssert(sql, columnParam, Collections.EMPTY_LIST); } @Test public void selectSomeFieldTest() throws Exception { andorUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); mysqlUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); String sql = "select id,name from " + studentTableName + " where id=" + RANDOM_ID; String[] columnParam = { "NAME", "ID" }; selectOrderAssert(sql, columnParam, Collections.EMPTY_LIST); sql = "select id,name from " + studentTableName + " where name= ?"; List<Object> param = new ArrayList<Object>(); param.add(name); selectOrderAssert(sql, columnParam, param); } /** * 带引号的特殊字符 * * @throws Exception */ @Test public void selectWithQuotationTest() throws Exception { String name = "as'sdfd's"; andorUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); mysqlUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); String[] columnParam = { "NAME", "ID" }; String sql = "select id,name from " + studentTableName + " where name= ?"; List<Object> param = new ArrayList<Object>(); param.add(name); selectOrderAssert(sql, columnParam, param); sql = "select id,name from " + studentTableName + " where name= 'as\\'sdfd\\'s'"; selectOrderAssert(sql, columnParam, null); } @Test public void selectWithNotExistDateTest() throws Exception { andorUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); mysqlUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); String sql = "select * from " + studentTableName + " where id=" + RANDOM_ID + 1; selectConutAssert(sql, Collections.EMPTY_LIST); } @Test public void selectWithNotExistFileTest() throws Exception { andorUpdateData("insert into " + studentTableName + " (id,name,school) values (?,?,?)", Arrays.asList(new Object[] { RANDOM_ID, name, school })); String sql = "select * from " + studentTableName + " where pk=" + RANDOM_ID; try { rc = andorQueryData(sql, null); Assert.fail(); } catch (Exception ex) { Assert.assertTrue(ex.getMessage().contains("column: PK is not existed in")); } } @Test public void selectWithNotExistTableTest() throws Exception { String sql = "select * from stu where pk=" + RANDOM_ID; try { rc = andorQueryData(sql, null); Assert.fail(); } catch (Exception ex) { Assert.assertTrue(ex.getMessage().contains("STU is not found")); } } }