improve SQLEvalVisitor

This commit is contained in:
wenshao
2012-11-10 23:53:30 +08:00
parent 8397542337
commit c6215482ae
9 changed files with 231 additions and 61 deletions
@@ -0,0 +1,15 @@
package com.alibaba.druid.bvt.sql.eval;
import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils;
import com.alibaba.druid.util.JdbcConstants;
import junit.framework.Assert;
import junit.framework.TestCase;
public class EvalCaseThen extends TestCase {
public void test_eval_then() throws Exception {
Assert.assertEquals(111, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "case ? when 0 then 111 else 222 end", 0));
Assert.assertEquals(222, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "case ? when 0 then 111 else 222 end", 1));
}
}
@@ -15,21 +15,53 @@
*/
package com.alibaba.druid.bvt.sql.eval;
import java.math.BigDecimal;
import junit.framework.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils;
import com.alibaba.druid.util.JdbcUtils;
import com.alibaba.druid.util.JdbcConstants;
public class EvalTest extends TestCase {
public void testEval() throws Exception {
Assert.assertEquals("A", SQLEvalVisitorUtils.evalExpr(JdbcUtils.MYSQL, "?", "A"));
Assert.assertEquals(123, SQLEvalVisitorUtils.evalExpr(JdbcUtils.MYSQL, "?", 123));
Assert.assertEquals("A", SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?", "A"));
Assert.assertEquals(123, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?", 123));
}
public void testEval_1() throws Exception {
Assert.assertEquals("AB", SQLEvalVisitorUtils.evalExpr(JdbcUtils.MYSQL, "? + ?", "A", "B"));
Assert.assertEquals(234, SQLEvalVisitorUtils.evalExpr(JdbcUtils.MYSQL, "? + ?", 123, 111));
Assert.assertEquals("AB", SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", "A", "B"));
Assert.assertEquals(234, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", 123, 111));
}
public void testEval_2() throws Exception {
Assert.assertEquals(110, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? * ?", 10, 11));
}
public void testEval_3() throws Exception {
Assert.assertEquals(new BigDecimal("110"), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? * ?",
new BigDecimal("10"),
new BigDecimal("11")));
}
public void testEval_4() throws Exception {
Assert.assertEquals(new BigDecimal("110"),
SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? * 11", new BigDecimal("10")));
}
public void testEval_5() throws Exception {
Assert.assertEquals(new BigDecimal("110.0"),
SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? * 11.0", new BigDecimal("10")));
}
public void testEval_6() throws Exception {
Assert.assertEquals(new BigDecimal("110.0"),
SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? * 11", new BigDecimal("10.0")));
}
public void testEval_7() throws Exception {
Assert.assertEquals(new BigDecimal("110.0"),
SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? * 11.0", "10"));
}
}