package cn.org.rapid_framework.generator.provider.db.sql.model;
import java.sql.SQLException;
import cn.org.rapid_framework.generator.GeneratorTestCase;
import cn.org.rapid_framework.generator.provider.db.sql.SqlFactory;
public class SqlTest extends GeneratorTestCase {
Sql sql = new Sql();
public void test_getOperationResultClassName() {
sql.setResultClass("com.badqiu.User");
sql.setParameterClass("com.badqiu.UserParam");
assertEquals("User",sql.getResultClassName());
assertEquals("UserParam",sql.getParameterClassName());
}
public void test_getOperationParameterClassName() {
sql.setSourceSql("select * from user_info");
sql.setExecuteSql("select * from user_info");
sql.setOperation("findPage");
assertEquals("FindPageResult",sql.getResultClassName());
assertEquals("FindPageQuery",sql.getParameterClassName());
sql.setSourceSql("delete from user_info");
assertEquals("FindPageParameter",sql.getParameterClassName());
}
public void test_getOperationResultClass() throws SQLException {
Sql sql = new SqlFactory().parseSql("select username from user_info");
assertEquals("String",sql.getResultClass());
sql = new SqlFactory().parseSql("select username,password from user_info");
assertEquals("UserInfo",sql.getResultClass());
sql = new SqlFactory().parseSql("select username as user,password as pwd from user_info");
sql.setOperation("findUsername");
assertEquals("FindUsernameResult",sql.getResultClass());
sql = new SqlFactory().parseSql("select username as user,count(password) as pwd from user_info group by username");
sql.setOperation("findUsername");
assertEquals("FindUsernameResult",sql.getResultClass());
sql = new SqlFactory().parseSql("select count(username) cnt_username,count(password) cnt_pwd from user_info");
sql.setOperation("op1");
assertEquals("Op1Result",sql.getResultClass());
sql.setResultClass("test_by_set_result");
assertEquals("test_by_set_result",sql.getResultClass());
}
public void test_getOperationParameterClass() {
sql = new SqlFactory().parseSql("select count(username) cnt_username,count(password) cnt_pwd from user_info");
sql.setOperation("findPage");
assertEquals("FindPageQuery",sql.getParameterClass());
sql = new SqlFactory().parseSql("insert into user_info(user_id,username) values (:userId,:username)");
sql.setOperation("insertUsername");
assertEquals("InsertUsernameParameter",sql.getParameterClass());
sql.setParameterClass("set_by_user");
assertEquals("set_by_user",sql.getParameterClass());
sql.setOperation(null);
sql.setParameterClass(null);
assertEquals(null,sql.getParameterClass());
}
// public void test_getTableName() {
// sql = new SqlFactory().parseSql("select count(username) cnt_username,count(password) cnt_pwd from user_info");
// assertNull(sql.getTableSqlName());
//
// sql.setTableSqlName("t1_abc_blog_123");
// assertEquals("t1_abc_blog_123",sql.getTableSqlName());
//
// assertEquals("T1AbcBlog123",sql.getTableClassName());
// }
public void test_isColumnsInSameTable() {
sql = new SqlFactory().parseSql("select username from user_info");
assertTrue(sql.isColumnsInSameTable());
sql = new SqlFactory().parseSql("select username,password from user_info");
assertTrue(sql.isColumnsInSameTable());
//FIXME 应该为true,是同一张表
sql = new SqlFactory().parseSql("select username user,password pwd from user_info");
assertFalse(sql.isColumnsInSameTable());
sql = new SqlFactory().parseSql("select count(username) cnt_username,count(password) cnt_pwd from user_info");
assertFalse(sql.isColumnsInSameTable());
sql = new SqlFactory().parseSql("insert into user_info(username,user_id) values (:username,?)");
assertFalse(sql.isColumnsInSameTable());
}
public void test_get_result_class() {
Sql sql = new SqlFactory().parseSql("select * from user_info /* inner join from blogjava */ ");
assertEquals("UserInfo",sql.getResultClass());
}
/** 测试聚集函数colum名称自动转换,示例转换 count(*) => count, max(age) => max_age, sum(income) => sum_income */
public void test_intergate_function_name_convert() {
sql = new SqlFactory().parseSql("select count(*) cnt, count(username) count_username,max(password) max_password,min(password) min_password,avg(sex) avg_sex from user_info");
String msg = sql.getColumns().toString();
assertNotNull(msg,sql.getColumnByName("Cnt"));
assertNotNull(msg,sql.getColumnByName("count_username"));
assertNotNull(msg,sql.getColumnByName("max_password"));
assertNotNull(msg,sql.getColumnByName("min_password"));
assertNotNull(msg,sql.getColumnByName("avg_sex"));
//FIXME 试聚集函数colum名称自动转换,示例转换 count(*) => count, max(age) => max_age, sum(income) => sum_income
sql = new SqlFactory().parseSql("select count(*) cnt, count(username),max(password),min(password),avg(sex) from user_info");
msg = sql.getColumns().toString();
assertNotNull(msg,sql.getColumnByName("Cnt"));
// assertNotNull(msg,sql.getColumnByName("C2"));
// assertNotNull(msg,sql.getColumnByName("C3"));
// assertNotNull(msg,sql.getColumnByName("C4"));
// assertNotNull(msg,sql.getColumnByName("C5"));
}
}