예제 #1
0
        public void DashSingleLineComment()
        {
            string comment = "-- this is my comment\r\n";
            string sql = String.Format("SELECT {0} * FROM Test", comment);
            SqlTokenizer tokenizer = new SqlTokenizer(sql);
            tokenizer.ReturnComments = true;
            Assert.AreEqual("SELECT", tokenizer.NextToken());
            Assert.AreEqual(comment, tokenizer.NextToken());
            Assert.AreEqual("*", tokenizer.NextToken());
            Assert.AreEqual("FROM", tokenizer.NextToken());
            Assert.AreEqual("Test", tokenizer.NextToken());
            Assert.IsNull(tokenizer.NextToken());

            tokenizer = new SqlTokenizer(sql);
            tokenizer.ReturnComments = false;
            Assert.AreEqual("SELECT", tokenizer.NextToken());
            Assert.AreEqual("*", tokenizer.NextToken());
            Assert.AreEqual("FROM", tokenizer.NextToken());
            Assert.AreEqual("Test", tokenizer.NextToken());
            Assert.IsNull(tokenizer.NextToken());
        }
예제 #2
0
 public void AnsiQuotes()
 {
     string sql = "SELECT 'a', \"a\", `a`";
     SqlTokenizer tokenizer = new SqlTokenizer(sql);
     tokenizer.AnsiQuotes = false;
     Assert.AreEqual("SELECT", tokenizer.NextToken());
     Assert.AreEqual("'a'", tokenizer.NextToken());
     Assert.IsTrue(tokenizer.Quoted);
     Assert.AreEqual(",", tokenizer.NextToken());
     Assert.AreEqual("\"a\"", tokenizer.NextToken());
     Assert.IsTrue(tokenizer.Quoted);
     Assert.AreEqual(",", tokenizer.NextToken());
     Assert.AreEqual("`a`", tokenizer.NextToken());
     Assert.IsTrue(tokenizer.Quoted);
     Assert.IsNull(tokenizer.NextToken());
 }
예제 #3
0
        public void MultiLineComment()
        {
            string comment = "/* this is my comment \r\n lines 2 \r\n line 3*/";
            string sql = String.Format("SELECT{0} * FROM Test", comment);
            SqlTokenizer tokenizer = new SqlTokenizer(sql);
            tokenizer.ReturnComments = true;
            Assert.AreEqual("SELECT", tokenizer.NextToken());
            Assert.AreEqual(comment.Trim(), tokenizer.NextToken());
            Assert.AreEqual("*", tokenizer.NextToken());
            Assert.AreEqual("FROM", tokenizer.NextToken());
            Assert.AreEqual("Test", tokenizer.NextToken());
            Assert.IsNull(tokenizer.NextToken());

            tokenizer = new SqlTokenizer(sql);
            tokenizer.ReturnComments = false;
            Assert.AreEqual("SELECT", tokenizer.NextToken());
            Assert.AreEqual("*", tokenizer.NextToken());
            Assert.AreEqual("FROM", tokenizer.NextToken());
            Assert.AreEqual("Test", tokenizer.NextToken());
            Assert.IsNull(tokenizer.NextToken());
        }
예제 #4
0
 public void SqlServerMode()
 {
     string sql = "SELECT `a`, [id], [name] FROM [test]";
     SqlTokenizer tokenizer = new SqlTokenizer(sql);
     tokenizer.SqlServerMode = true;
     tokenizer.NextToken();
     Assert.AreEqual("`a`", tokenizer.NextToken());
     Assert.IsTrue(tokenizer.Quoted);
     tokenizer.NextToken();  // read ,
     Assert.AreEqual("[id]", tokenizer.NextToken());
     Assert.IsTrue(tokenizer.Quoted);
     tokenizer.NextToken();  // read ,
     Assert.AreEqual("[name]", tokenizer.NextToken());
     Assert.IsTrue(tokenizer.Quoted);
     tokenizer.NextToken();  // read FROM
     Assert.AreEqual("[test]", tokenizer.NextToken());
     Assert.IsTrue(tokenizer.Quoted);
 }
예제 #5
0
 public void UserVariable()
 {
     string sql = "SELECT 'a', 1, @@myVar";
     SqlTokenizer tokenizer = new SqlTokenizer(sql);
     tokenizer.ReturnComments = false;
     Assert.AreEqual("SELECT", tokenizer.NextToken());
     Assert.AreEqual("'a'", tokenizer.NextToken());
     Assert.AreEqual(",", tokenizer.NextToken());
     Assert.AreEqual("1", tokenizer.NextToken());
     Assert.AreEqual(",", tokenizer.NextToken());
     Assert.AreEqual("@@myVar", tokenizer.NextToken());
     Assert.IsNull(tokenizer.NextToken());
 }
예제 #6
0
 public void Slash()
 {
     string sql = "AND // OR";
     SqlTokenizer tokenizer = new SqlTokenizer(sql);
     tokenizer.AnsiQuotes = false;
     Assert.AreEqual("AND", tokenizer.NextToken());
     Assert.AreEqual("/", tokenizer.NextToken());
     Assert.AreEqual("/", tokenizer.NextToken());
     Assert.AreEqual("OR", tokenizer.NextToken());
     Assert.IsNull(tokenizer.NextToken());
 }
예제 #7
0
 public void StringLiteral()
 {
     string sql = "SELECT 'a', 1, 'b'";
     SqlTokenizer tokenizer = new SqlTokenizer(sql);
     tokenizer.ReturnComments = false;
     Assert.AreEqual("SELECT", tokenizer.NextToken());
     Assert.AreEqual("'a'", tokenizer.NextToken());
     Assert.AreEqual(",", tokenizer.NextToken());
     Assert.AreEqual("1", tokenizer.NextToken());
     Assert.AreEqual(",", tokenizer.NextToken());
     Assert.AreEqual("'b'", tokenizer.NextToken());
     Assert.IsNull(tokenizer.NextToken());
 }
예제 #8
0
 public void Simple()
 {
     SqlTokenizer tokenizer = new SqlTokenizer("SELECT * FROM Test");
     Assert.AreEqual("SELECT", tokenizer.NextToken());
     Assert.AreEqual("*", tokenizer.NextToken());
     Assert.AreEqual("FROM", tokenizer.NextToken());
     Assert.AreEqual("Test", tokenizer.NextToken());
     Assert.IsNull(tokenizer.NextToken());
 }
예제 #9
0
 public void ParseProcBody()
 {
     string sql = "CREATE PROCEDURE spTest(testid INT, testname VARCHAR(20)) BEGIN SELECT 1; END";
     SqlTokenizer tokenizer = new SqlTokenizer(sql);
     tokenizer.AnsiQuotes = false;
     Assert.AreEqual("CREATE", tokenizer.NextToken());
     Assert.AreEqual("PROCEDURE", tokenizer.NextToken());
     Assert.AreEqual("spTest", tokenizer.NextToken());
     Assert.AreEqual("(", tokenizer.NextToken());
     Assert.AreEqual("testid", tokenizer.NextToken());
     Assert.AreEqual("INT", tokenizer.NextToken());
     Assert.AreEqual(",", tokenizer.NextToken());
     Assert.AreEqual("testname", tokenizer.NextToken());
     Assert.AreEqual("VARCHAR", tokenizer.NextToken());
     Assert.AreEqual("(", tokenizer.NextToken());
     Assert.AreEqual("20", tokenizer.NextToken());
     Assert.AreEqual(")", tokenizer.NextToken());
     Assert.AreEqual(")", tokenizer.NextToken());
     Assert.AreEqual("BEGIN", tokenizer.NextToken());
     Assert.AreEqual("SELECT", tokenizer.NextToken());
     Assert.AreEqual("1", tokenizer.NextToken());
     Assert.AreEqual(";", tokenizer.NextToken());
     Assert.AreEqual("END", tokenizer.NextToken());
     Assert.IsNull(tokenizer.NextToken());
 }
예제 #10
0
 public void ParameterWithSpecialCharacters()
 {
     string sql = "SELECT * FROM Test WHERE id=@id_$123";
     SqlTokenizer tokenizer = new SqlTokenizer(sql);
     tokenizer.ReturnComments = true;
     Assert.AreEqual("SELECT", tokenizer.NextToken());
     Assert.AreEqual("*", tokenizer.NextToken());
     Assert.AreEqual("FROM", tokenizer.NextToken());
     Assert.AreEqual("Test", tokenizer.NextToken());
     Assert.AreEqual("WHERE", tokenizer.NextToken());
     Assert.AreEqual("id", tokenizer.NextToken());
     Assert.AreEqual("=", tokenizer.NextToken());
     Assert.AreEqual("@id_$123", tokenizer.NextToken());
     Assert.IsNull(tokenizer.NextToken());
 }
예제 #11
0
 public void Parameter()
 {
     string sql = "SELECT * FROM Test WHERE id=@id AND id2=?id2";
     SqlTokenizer tokenizer = new SqlTokenizer(sql);
     tokenizer.ReturnComments = true;
     Assert.AreEqual("SELECT", tokenizer.NextToken());
     Assert.AreEqual("*", tokenizer.NextToken());
     Assert.AreEqual("FROM", tokenizer.NextToken());
     Assert.AreEqual("Test", tokenizer.NextToken());
     Assert.AreEqual("WHERE", tokenizer.NextToken());
     Assert.AreEqual("id", tokenizer.NextToken());
     Assert.AreEqual("=", tokenizer.NextToken());
     Assert.AreEqual("@id", tokenizer.NextToken());
     Assert.AreEqual("AND", tokenizer.NextToken());
     Assert.AreEqual("id2", tokenizer.NextToken());
     Assert.AreEqual("=", tokenizer.NextToken());
     Assert.AreEqual("?id2", tokenizer.NextToken());
     Assert.IsNull(tokenizer.NextToken());
 }