GetStringValue() public method

make sense for those types of token:
MySqlToken.UsrVar : e.g. "@var1", "@'mary''s'";
MySqlToken.SysVar : e.g. "var2";
MySqlToken.LiteralChars , MySqlToken.LiteralNchars : e.g. "'ab\\'c'";
MySqlToken.LiteralBit : e.g. "0101"
MySqlToken.Identifier
public GetStringValue ( ) : string
return string
示例#1
0
 public virtual void TestPlaceHolder()
 {
     var sut = new MySqlLexer(" ${abc}. ");
     Assert.AreEqual(MySqlToken.PlaceHolder, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(" ${abc");
     Assert.AreEqual(MySqlToken.PlaceHolder, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(" ${abc}");
     Assert.AreEqual(MySqlToken.PlaceHolder, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(" ${abc}abn");
     Assert.AreEqual(MySqlToken.PlaceHolder, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("abn", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(" ${abc12@,,.~`*-_$}}}}");
     Assert.AreEqual(MySqlToken.PlaceHolder, sut.Token());
     Assert.AreEqual("abc12@,,.~`*-_$", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncRightBrace, sut.Token());
     sut.NextToken();
     sut.NextToken();
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(" #${abc\n,${abc12@,,.~`*-_$}");
     Assert.AreEqual(MySqlToken.PuncComma, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PlaceHolder, sut.Token());
     Assert.AreEqual("abc12@,,.~`*-_$", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("${abc(123,345)} ,");
     Assert.AreEqual(MySqlToken.PlaceHolder, sut.Token());
     Assert.AreEqual("abc(123,345)", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncComma, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
 }
示例#2
0
 public virtual void TestLexer()
 {
     var sut = new MySqlLexer(" @a.1_$ .1e+1a%x'a1e'*0b11a \r#\"\"\n@@`123`@@'abc'1.e-1d`/`1.1e1.1e1");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@a.1_$", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("1e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpPlus, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("1a", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpPercent, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("a1e", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpAsterisk, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("0b11a", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("`123`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual(string.Empty, sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("0.1", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("d", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("`/`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("11", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("1", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
 }
示例#3
0
 public virtual void TestNumber()
 {
     var sut =
         new MySqlLexer(" . 12e3/***/.12e3#/**\n.123ee123.1--  \r\t\n.12e/*a*//* !*/.12e_a/12e-- \r\t.12e-1");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("12000", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("120", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("123ee123", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("0.1", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e_a", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpSlash, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(".12e-1  ");
     Assert.AreEqual("0.012", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12e000000000000000  ");
     Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString());
     sut = new MySqlLexer(".12e-  ");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpMinus, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(".12e-1d  ");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpMinus, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("1d", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12.e+1d  ");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("120", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("d", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12.f ");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("f", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(".12f ");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12f", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("1.2f ");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("1.2", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("f", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     try
     {
         sut = new MySqlLexer("12.e ");
         Assert.IsFalse(true, "should not reach here");
     }
     catch (SqlSyntaxErrorException)
     {
     }
     sut = new MySqlLexer("0e  ");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("0e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12. e  ");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12. e+1  ");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpPlus, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token());
     Assert.AreEqual("1", sut.GetIntegerValue().ToString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12.e+1  ");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("120", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12.");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(".12");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("0.12", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12e");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12ef");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12ef", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(".12e");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("1.0e0");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("1.0", sut.GetDecimalValue().ToPlainString());
     sut = new MySqlLexer("1.01e0,");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("1.01", sut.GetDecimalValue().ToPlainString());
     sut = new MySqlLexer(".12e-");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpMinus, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(".12e-d");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpMinus, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("d", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("123E2.*");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("12300", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpAsterisk, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("1e-1  ");
     Assert.AreEqual("0.1", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(".E5");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("E5", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0E5d");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("0E5d", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0E10");
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("0", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(".   ");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("12345678901234567890123 1234567890 1234567890123456789");
     Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token());
     Assert.AreEqual("12345678901234567890123", sut.GetIntegerValue().ToString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token());
     Assert.AreEqual("1234567890", sut.GetIntegerValue().ToString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token());
     Assert.AreEqual("1234567890123456789", sut.GetIntegerValue().ToString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(".");
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
 }
示例#4
0
 public virtual void TestHexBit()
 {
     var sut = new MySqlLexer("0x123  ");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("123", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0x123");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("123", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0x123aDef");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("123aDef", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0x0");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("0", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0xABC");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("ABC", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0xA01aBC");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("A01aBC", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0x123re2  ");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("0x123re2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("x'123'e  ");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("123", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("e", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("x'123'");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("123", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("x'102AaeF3'");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("102AaeF3", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0b10");
     Assert.AreEqual(MySqlToken.LiteralBit, sut.Token());
     Assert.AreEqual("10", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0b101101");
     Assert.AreEqual(MySqlToken.LiteralBit, sut.Token());
     Assert.AreEqual("101101", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("0b103  ");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("0b103", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("b'10'b  ");
     Assert.AreEqual(MySqlToken.LiteralBit, sut.Token());
     Assert.AreEqual("10", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("b", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\r 0xabc.123;x'e'a0x1.3x'a2w'--\t0b11\n0b12*b '123' b'101'");
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("abc", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token());
     Assert.AreEqual("0.123", sut.GetDecimalValue().ToPlainString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncSemicolon, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralHex, sut.Token());
     Assert.AreEqual("e", new string(sut.Sql, sut.OffsetCache, sut.SizeCache));
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("a0x1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("3x", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'a2w'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("0b12", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpAsterisk, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("b", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'123'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralBit, sut.Token());
     Assert.AreEqual("101", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
 }
示例#5
0
 public virtual void TestId1()
 {
     var sut = new MySqlLexer("id . 12e3f /***/`12\\3```-- d\n \r#\r  ##\n\t123d");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("12e3f", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("`12\\3```", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("123d", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("`ab``c`");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("`ab``c`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("`,\"'\\//*$#\nab``c  -`");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("`,\"'\\//*$#\nab``c  -`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("`ab````c```");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("`ab````c```", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("`ab`````c``````");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("`ab`````", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("c", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("``````", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("n123 \t b123 x123");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("n123", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("b123", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("x123", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("n邱 硕");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("n邱", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("硕", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("n邱硕");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("n邱硕", sut.GetStringValue());
     sut.NextToken();
     sut = new MySqlLexer(" $abc");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("$abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("$abc  ");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("$abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(" $abc  ");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("$abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(" 123d +=_&*_1a^abc-- $123");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("123d", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpPlus, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpEquals, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("_", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpAmpersand, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpAsterisk, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("_1a", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpCaret, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(" $abc  ,#$abc\n{`_``12`(123a)_abcnd; //x123");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("$abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncComma, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncLeftBrace, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("`_``12`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncLeftParen, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("123a", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncRightParen, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("_abcnd", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncSemicolon, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpSlash, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpSlash, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("x123", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
 }
示例#6
0
        /// <exception cref="System.SqlSyntaxErrorException" />
        public static void Main(string[] args)
        {
            var sql = Performance.SqlBenchmarkSelect;
            var chars = sql.ToCharArray();
            var sut = new MySqlLexer(sql);
            var start = Runtime.CurrentTimeMillis();
            var end = Runtime.CurrentTimeMillis();
            for (var i = 0; i < 1; ++i)
            {
                for (; !sut.Eof();)
                {
                    sut.NextToken();
                    switch (sut.Token())
                    {
                        case MySqlToken.LiteralNumMixDigit:
                        {
                            sut.GetDecimalValue();
                            break;
                        }

                        case MySqlToken.LiteralNumPureDigit:
                        {
                            sut.GetIntegerValue();
                            break;
                        }

                        default:
                        {
                            sut.GetStringValue();
                            break;
                        }
                    }
                }
            }
            var loop = 5000000;
            sut = new MySqlLexer(sql);
            start = Runtime.CurrentTimeMillis();
            for (var i_1 = 0; i_1 < loop; ++i_1)
            {
                sut = new MySqlLexer(chars);
                for (; !sut.Eof();)
                {
                    sut.NextToken();
                    switch (sut.Token())
                    {
                        case MySqlToken.LiteralNumMixDigit:
                        {
                            sut.GetDecimalValue();
                            break;
                        }

                        case MySqlToken.LiteralNumPureDigit:
                        {
                            sut.GetIntegerValue();
                            break;
                        }

                        default:
                        {
                            sut.GetStringValue();
                            break;
                        }
                    }
                }
            }
            end = Runtime.CurrentTimeMillis();
            Console.Out.WriteLine((end - start)*1.0d/(loop/1000) + " us.");
        }
示例#7
0
 public virtual void TestUserDefVar()
 {
     var sut = new MySqlLexer("@abc  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@abc.d  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@abc.d", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@abc_$.d");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@abc_$.d", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@abc_$_.");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@abc_$_.", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@''");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@'\\''");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@'\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@''''");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@''''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@'\"'");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@'\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@'\"\"'");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@'\"\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@'\\\"'");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@'\\\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@'ac\\''  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@'ac\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@'''ac\\''  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@'''ac\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@'abc'''ac\\''  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@'abc'''", sut.GetStringValue());
     sut = new MySqlLexer("@''abc''");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@\"\"  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@\"\"", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@\"\"\"abc\"  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@\"\"\"abc\"", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@\"\\\"\"\"abc\"  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@\"\\\"\"\"abc\"", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@\"\\\"\"  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@\"\\\"\"", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@\"\"\"\\\"d\"  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@\"\"\"\\\"d\"", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@\"'\"  ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@\"'\"", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@`` ");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@``", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@````");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@````", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@` `");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@` `", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@`abv```");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@`abv```", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@`````abc`");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@`````abc`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@`````abc```");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@`````abc```", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@``abc");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@``", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@`abc`````abc```");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@`abc`````", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("```", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer(" -- \n  @  #abc\n\r\t\"\"@\"abc\\\\''-- abc\n'''\\\"\"\"\"");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@\"abc\\\\''-- abc\n'''\\\"\"\"\"", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("/**/@a #@abc\n@.\r\t");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@a", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@.", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("  #@abc\n@\"1a_-@#!''`=\\a\"-- @\r\n@'-_1a/**/\\\"\\''/*@abc*/@`_1@\\''\"`");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@\"1a_-@#!''`=\\a\"", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@'-_1a/**/\\\"\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@`_1@\\''\"`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("  /*! */@._a$ @_a.b$c.\r@1_a.$#\[email protected]_/@-- \n@_--@.[]'\"@#abc'@a,@;@~#@abc");
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@._a$", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@_a.b$c.", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@1_a.$", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@A.a_", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpSlash, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@_", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpMinus, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpMinus, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@.", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncLeftBracket, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncRightBracket, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\"@#abc'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@a", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncComma, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncSemicolon, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.UsrVar, sut.Token());
     Assert.AreEqual("@", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpTilde, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
 }
示例#8
0
 public virtual void TestSystemVar()
 {
     var sut = new MySqlLexer("@@abc  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     Assert.AreEqual("ABC", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@`abc`  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("`abc`", sut.GetStringValue());
     Assert.AreEqual("`ABC`", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@```abc`  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("```abc`", sut.GetStringValue());
     Assert.AreEqual("```ABC`", sut.GetStringValueUppercase());
     sut = new MySqlLexer("@@``  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("``", sut.GetStringValue());
     Assert.AreEqual("``", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@`a```  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("`a```", sut.GetStringValue());
     Assert.AreEqual("`A```", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@````  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("````", sut.GetStringValue());
     Assert.AreEqual("````", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@`~!````@#$%^&*()``_+=-1{}[]\";:'<>,./?|\\`  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("`~!````@#$%^&*()``_+=-1{}[]\";:'<>,./?|\\`", sut
         .GetStringValue());
     Assert.AreEqual("`~!````@#$%^&*()``_+=-1{}[]\";:'<>,./?|\\`", sut
         .GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@global.var1  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("global", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("var1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@'abc'  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual(string.Empty, sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@\"abc\"  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual(string.Empty, sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut =
         new MySqlLexer(
             "@@.  /*@@abc*/@@`abc''\"\\@@!%*&+_abcQ`//@@_1.  @@$#\n@@$var.-- @@a\t\n@@system_var:@@a`b`?");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual(string.Empty, sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("`abc''\"\\@@!%*&+_abcQ`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpSlash, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpSlash, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("_1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("$", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("$var", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("system_var", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncColon, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("a", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("`b`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.QuestionMark, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
 }
示例#9
0
 public virtual void TestString()
 {
     var sut = new MySqlLexer("''");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("'''\\''");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\'\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\'\'\'\'\'\\''");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\'\\'\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("''''''/'abc\\''");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\'\\''", sut.GetStringValue());
     sut.NextToken();
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\'abc\\\'\'");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("'\\\\\\\"\"\"'");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\\\\\\"\"\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("'\'\''");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("''''");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("'he\"\"\"llo'");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'he\"\"\"llo'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("'he'\''\'llo'");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'he\\'\\'llo'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("'\''hello'");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\'hello'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"abc'\\d\"\"ef\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc\\'\\d\"ef'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"abc'\\\\\"\"\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc\\'\\\\\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"\\'\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"\"\"\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"abc\" '\\'s'");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\'s'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"\"\"'\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\"\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"\\\"\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"\\\\\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\\\\'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\"   hello '''/**/#\n-- \n~=+\"\"\"\"\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'   hello \\'\\'\\'/**/#\n-- \n~=+\"\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("\r--\t\n\"abc\"");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("N'ab\\'c'");
     Assert.AreEqual(MySqlToken.LiteralNchars, sut.Token());
     Assert.AreEqual("'ab\\'c'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("  \'abc\\\\\\'\' 'abc\\a\\'\''\"\"'/\"abc\\\"\".\"\"\"abc\"\"\"\"'\''\"n'ab\\'c'");
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc\\\\\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc\\a\\'\\'\"\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpSlash, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc\\\"'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'\"abc\"\"\\'\\'\\''", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNchars, sut.Token());
     Assert.AreEqual("'ab\\'c'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
 }
示例#10
0
 public virtual void TestCStyleComment()
 {
     var sut = new MySqlLexer("id1 /*!id2 */ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("id1 /*! id2 */ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("id1 /*!*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     var version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40001id2*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000id2*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!4000id2*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("4000id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!400001id2*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("1id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!400011id2*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!4000*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token());
     Assert.AreEqual("4000", sut.GetIntegerValue().ToString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40001*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!400001*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token());
     Assert.AreEqual("1", sut.GetIntegerValue().ToString());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000 -- id2\n*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000 /* id2*/*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000/* id2*/*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000id2*/* id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpAsterisk, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000/*/*/id2*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40001/*/*/id2*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000/*/*/id2*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000/*/*/id2*/ /*!40000 id4*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id4", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40001/*/*/id2*/ /*!40000 id4*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id4", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000/*/*/id2*/ /*!40001 id4*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000/*/*/id2*//*!40001 id4*//*!40001 id5*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
     version = MySqlLexer.SetCStyleCommentVersion(40000);
     sut = new MySqlLexer("id1 /*!40000/*/*/id2*//*!40001 id4*//*!40000id5*/ id3");
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id2", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id5", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("id3", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     MySqlLexer.SetCStyleCommentVersion(version);
 }