From 7d94d3b0956ae79bb828e15f8503b4756dd91b6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Wed, 16 May 2012 20:35:46 +0800 Subject: [PATCH] add test --- .../bvt/sql/cobar/DMLCallParserTest.java | 80 ++++++++++++++++++ .../bvt/sql/cobar/DMLDeleteParserTest.java | 81 +++++++++++++++++++ 2 files changed, 161 insertions(+) create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/cobar/DMLCallParserTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/cobar/DMLDeleteParserTest.java diff --git a/src/test/java/com/alibaba/druid/bvt/sql/cobar/DMLCallParserTest.java b/src/test/java/com/alibaba/druid/bvt/sql/cobar/DMLCallParserTest.java new file mode 100644 index 0000000000..fe2c815a0a --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/cobar/DMLCallParserTest.java @@ -0,0 +1,80 @@ +/** + * (created at 2011-7-18) + */ +package com.alibaba.druid.bvt.sql.cobar; + +import org.junit.Assert; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.parser.Token; + +import junit.framework.TestCase; + +/** + * @author YU Danping + */ + +public class DMLCallParserTest extends TestCase { + public void testCall_0() throws Exception { + String sql = "call p(?,?)"; + MySqlStatementParser parser = new MySqlStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + parser.match(Token.EOF); + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("CALL p(?, ?)", output); + } + + public void testCall_1() throws Exception { + String sql = "call p(@var1,'@var2',var3)"; + MySqlStatementParser parser = new MySqlStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + parser.match(Token.EOF); + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("CALL p(@var1, '@var2', var3)", output); + } + + public void testCall_2() throws Exception { + String sql = "call p()"; + MySqlStatementParser parser = new MySqlStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + parser.match(Token.EOF); + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("CALL p()", output); + } + +// public void testCall() throws SQLSyntaxErrorException { +// String sql = "call p(?,?) "; +// SQLLexer lexer = new SQLLexer(sql); +// DMLCallParser parser = new DMLCallParser(lexer, new SQLExprParser(lexer)); +// DMLCallStatement calls = parser.call(); +// parser.match(Token.EOF); +// String output = output2MySQL(calls, sql); +// Assert.assertEquals("CALL p(?, ?)", output); +// +// sql = "call p(@var1,'@var2',var3)"; +// lexer = new SQLLexer(sql); +// parser = new DMLCallParser(lexer, new SQLExprParser(lexer)); +// calls = parser.call(); +// parser.match(Token.EOF); +// output = output2MySQL(calls, sql); +// Assert.assertEquals("CALL p(@var1, '@var2', var3)", output); +// +// sql = "call p()"; +// lexer = new SQLLexer(sql); +// parser = new DMLCallParser(lexer, new SQLExprParser(lexer)); +// calls = parser.call(); +// parser.match(Token.EOF); +// output = output2MySQL(calls, sql); +// Assert.assertEquals("CALL p()", output); +// +// sql = "call p(?)"; +// lexer = new SQLLexer(sql); +// parser = new DMLCallParser(lexer, new SQLExprParser(lexer)); +// calls = parser.call(); +// parser.match(Token.EOF); +// output = output2MySQL(calls, sql); +// Assert.assertEquals("CALL p(?)", output); +// } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/cobar/DMLDeleteParserTest.java b/src/test/java/com/alibaba/druid/bvt/sql/cobar/DMLDeleteParserTest.java new file mode 100644 index 0000000000..2d1b80c72c --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/cobar/DMLDeleteParserTest.java @@ -0,0 +1,81 @@ +package com.alibaba.druid.bvt.sql.cobar; + +import org.junit.Assert; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.parser.Token; + +import junit.framework.TestCase; + +public class DMLDeleteParserTest extends TestCase { + + public void testDelete_0() throws Exception { + String sql = "deLetE LOW_PRIORITY from id1.id , id using t1 a where col1 =? "; + MySqlStatementParser parser = new MySqlStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + parser.match(Token.EOF); + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("DELETE LOW_PRIORITY FROM id1.id, id\n" + // + "USING t1 a" + // + "\nWHERE col1 = ?", output); + } + + public void testDelete_1() throws Exception { + String sql = "deLetE from id1.id using t1"; + MySqlStatementParser parser = new MySqlStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + parser.match(Token.EOF); + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("DELETE FROM id1.id" + // + "\nUSING t1", output); + } + + public void testDelete_2() throws Exception { + String sql = "delete from offer.*,wp_image.* using offer a,wp_image b where a.member_id=b.member_id and a.member_id='abc' "; + MySqlStatementParser parser = new MySqlStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + parser.match(Token.EOF); + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("DELETE FROM offer.*, wp_image.*\n" + // + "USING offer a, wp_image b\n" + // + "WHERE a.member_id = b.member_id\n" + // + "AND a.member_id = 'abc'", output); + } + + public void testDelete_3() throws Exception { + String sql = "deLetE from id1.id where col1='adf' limit 1,?"; + MySqlStatementParser parser = new MySqlStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + parser.match(Token.EOF); + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("DELETE FROM id1.id\n" + // + "WHERE col1 = 'adf'\n" + // + "LIMIT 1, ?", output); + } + + public void testDelete_4() throws Exception { + String sql = "deLetE from id where col1='adf' ordEr by d liMit ? offset 2"; + MySqlStatementParser parser = new MySqlStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + parser.match(Token.EOF); + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("DELETE FROM id\n" + // + "WHERE col1 = 'adf'\n" + // + "ORDER BY d\n" + // + "LIMIT 2, ?", output); + } + + public void testDelete_5() throws Exception { + String sql = "deLetE id.* from t1,t2 where col1='adf' and col2=1"; + MySqlStatementParser parser = new MySqlStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + parser.match(Token.EOF); + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("DELETE id.*\n" + // + "FROM t1, t2\n" + // + "WHERE col1 = 'adf'\n" + // + "AND col2 = 1", output); + } +}