public void TokenTypeName() { Tokenizer testSubject = new Tokenizer(); Assert.AreEqual("None", testSubject.TokenTypeName); object[][] values = new object[][] { new object[] {"2147483649", "BigInt"}, new object[] {Token.ValueFor.TRUE, "Boolean"}, new object[] {"'2009-01-01'", "Date"}, new object[] {"123.0123", "Decimal"}, new object[] {"\"foo\"", "Delimited Identifier"}, new object[] {"123.1e-23", "Float"}, new object[] {"foo.bar", "Identifier Chain"}, new object[] {int.MaxValue.ToString(), "Integer"}, new object[] {"column_one", "Name"}, new object[] {"@MyNamedParameter", "Named Parameter"}, new object[] {"?", "Parameter Marker"}, new object[] {"<", "Special"}, new object[] {"'''foo'' they said.'","String"}, new object[] {"'12:23:02'", "Time"}, new object[] {"'2009-01-01 12:23:02.123456789'", "Timestamp"} }; foreach (object[] row in values) { testSubject.Reset(row[0].ToString()); testSubject.GetNextAsString(); Assert.AreEqual((string)row[1], testSubject.TokenTypeName); } }
public void TokenTypeTest() { Tokenizer testSubject = new Tokenizer(); Assert.AreEqual(SqlTokenType.None, testSubject.TokenType); object[][] values = new object[][] { new object[] {"2147483649", SqlTokenType.BigIntLiteral}, new object[] {Token.ValueFor.TRUE, SqlTokenType.BooleanLiteral}, new object[] {"'2009-01-01'", SqlTokenType.DateLiteral}, new object[] {"123.0123", SqlTokenType.DecimalLiteral}, new object[] {"\"foo\"", SqlTokenType.DelimitedIdentifier}, new object[] {"123.1e-23", SqlTokenType.FloatLiteral}, new object[] {"foo.bar", SqlTokenType.IdentifierChain}, new object[] {int.MaxValue.ToString(), SqlTokenType.IntegerLiteral}, new object[] {"column_one", SqlTokenType.Name}, new object[] {"@MyNamedParameter", SqlTokenType.NamedParameter}, new object[] {"?", SqlTokenType.ParameterMarker}, new object[] {"<", SqlTokenType.Special}, new object[] {"'''foo'' they said.'", SqlTokenType.StringLiteral}, new object[] {"'12:23:02'", SqlTokenType.TimeLiteral}, new object[] {"'2009-01-01 12:23:02.123456789'", SqlTokenType.TimestampLiteral} }; foreach (object[] row in values) { testSubject.Reset(row[0].ToString()); testSubject.GetNextAsString(); Assert.AreEqual((SqlTokenType)row[1], testSubject.TokenType); } }
public void Position() { Tokenizer testSubject = new Tokenizer("the relative position is"); Assert.AreEqual(0, testSubject.Position); testSubject.GetNextAsSimpleToken(); testSubject.GetNextAsString(); Assert.AreEqual("the relative".Length, testSubject.Position); }
public void SetPartMarker() { Tokenizer testSubject = new Tokenizer("set part marker"); testSubject.SetPartMarker(); testSubject.GetNextAsString(); testSubject.GetNextAsString(); Assert.AreEqual("set part", testSubject.GetPart(testSubject.PartMarker, testSubject.Position)); testSubject.SetPartMarker(); testSubject.GetNextAsString(); Assert.AreEqual(" marker", testSubject.GetPart(testSubject.PartMarker, testSubject.Position)); }
public void ParameterName() { Tokenizer testSubject = new Tokenizer("select @p_dummy from DUAL"); testSubject.GetNextAsSimpleToken(); testSubject.GetNextAsString(); Assert.AreEqual("p_dummy", testSubject.ParameterName); Assert.AreEqual('@', testSubject.ParameterNamePrefix); }
public void PartMarker() { Tokenizer testSubject = new Tokenizer("part of this"); testSubject.SetPartMarker(); int origin = testSubject.PartMarker; testSubject.GetNextAsString(); testSubject.GetNextAsString(); Assert.AreEqual("part of", testSubject.GetPart(origin, testSubject.Position)); }
public void LiteralValueDataType() { Tokenizer testSubject = new Tokenizer("1 1.0 1.0E2 '2009-01-01' '12:00:01' '2009-01-01 12:00:01' '2009-01-01 12:00:01.123456789'"); testSubject.GetNextAsString(); Assert.AreEqual(SqlTokenType.IntegerLiteral, testSubject.TokenType); Assert.AreEqual(HsqlProviderType.Integer, testSubject.LiteralValueDataType); testSubject.GetNextAsString(); Assert.AreEqual(SqlTokenType.DecimalLiteral, testSubject.TokenType); Assert.AreEqual(HsqlProviderType.Decimal, testSubject.LiteralValueDataType); testSubject.GetNextAsString(); Assert.AreEqual(SqlTokenType.FloatLiteral, testSubject.TokenType); Assert.AreEqual(HsqlProviderType.Double, testSubject.LiteralValueDataType); testSubject.GetNextAsString(); Assert.AreEqual(SqlTokenType.DateLiteral, testSubject.TokenType); Assert.AreEqual(HsqlProviderType.Date, testSubject.LiteralValueDataType); testSubject.GetNextAsString(); Assert.AreEqual(SqlTokenType.TimeLiteral, testSubject.TokenType); Assert.AreEqual(HsqlProviderType.Time, testSubject.LiteralValueDataType); testSubject.GetNextAsString(); Assert.AreEqual(SqlTokenType.TimestampLiteral, testSubject.TokenType); Assert.AreEqual(HsqlProviderType.TimeStamp, testSubject.LiteralValueDataType); testSubject.GetNextAsString(); Assert.AreEqual(SqlTokenType.TimestampLiteral, testSubject.TokenType); Assert.AreEqual(HsqlProviderType.TimeStamp, testSubject.LiteralValueDataType); }
public void NormalizedToken() { Tokenizer testSubject = new Tokenizer("select 'Let''s Have a nice day!' from DUAL"); testSubject.GetNextAsString(); Assert.AreEqual("SELECT", testSubject.NormalizedToken); testSubject.GetNextAsString(); Assert.AreEqual("'Let''s Have a nice day!'", testSubject.NormalizedToken); }
public void IsGetThis() { Tokenizer testSubject = new Tokenizer("create table test(id int, \"val\" varchar(12));"); if (testSubject.IsGetThis(Token.ValueFor.ALTER)) { Assert.AreEqual(Token.ValueFor.CREATE, Token.ValueFor.ALTER); } else if (testSubject.IsGetThis(Token.ValueFor.CREATE)) { if (testSubject.IsGetThis(Token.ValueFor.VIEW)) { Assert.AreEqual(Token.ValueFor.TABLE, Token.ValueFor.VIEW); } else if (testSubject.IsGetThis(Token.ValueFor.TABLE)) { string table_name = testSubject.GetNextAsName(); } else { Assert.AreNotEqual(Token.ValueFor.TABLE, testSubject.GetNextAsString()); } } else if (testSubject.IsGetThis(Token.ValueFor.DROP)) { Assert.AreEqual(Token.ValueFor.CREATE, Token.ValueFor.DROP); } else { Assert.AreNotEqual(Token.ValueFor.CREATE, testSubject.GetNextAsString()); } }
public void LastPart() { Tokenizer testSubject = new Tokenizer("create table test(id int, \"val\" varchar(12));"); Assert.AreEqual(Token.ValueFor.CREATE, testSubject.GetNextAsSimpleToken()); Assert.AreEqual(6, testSubject.Position); Assert.AreEqual("create", testSubject.LastPart); Assert.AreEqual(Token.ValueFor.TABLE, testSubject.GetNextAsSimpleToken()); Assert.AreEqual(12, testSubject.Position); Assert.AreEqual("create table", testSubject.LastPart); testSubject.PartMarker = testSubject.Position + 1; Assert.AreEqual("TEST", testSubject.GetNextAsSimpleName()); Assert.AreEqual(17, testSubject.Position); Assert.AreEqual("test", testSubject.LastPart); Assert.AreEqual(Token.ValueFor.OPENBRACKET, testSubject.GetNextAsSimpleToken()); Assert.AreEqual(18, testSubject.Position); Assert.AreEqual("test(", testSubject.LastPart); Assert.AreEqual("ID", testSubject.GetNextAsSimpleName()); Assert.AreEqual(20, testSubject.Position); Assert.AreEqual("test(id", testSubject.LastPart); Assert.AreEqual(Token.ValueFor.INT, testSubject.GetNextAsSimpleToken()); Assert.AreEqual(24, testSubject.Position); Assert.AreEqual("test(id int", testSubject.LastPart); testSubject.SetPartMarker(); Assert.AreEqual(Token.ValueFor.COMMA, testSubject.GetNextAsSimpleToken()); Assert.AreEqual(25, testSubject.Position); Assert.AreEqual(Token.ValueFor.COMMA, testSubject.LastPart); Assert.AreEqual("val", testSubject.GetNextAsName()); Assert.AreEqual(SqlTokenType.DelimitedIdentifier, testSubject.TokenType); Assert.AreEqual(31,testSubject.Position); Assert.AreEqual(", \"val\"", testSubject.LastPart); Assert.AreEqual(Token.ValueFor.VARCHAR, testSubject.GetNextAsSimpleToken()); Assert.AreEqual(39, testSubject.Position); Assert.AreEqual(", \"val\" varchar", testSubject.LastPart); Assert.AreEqual(Token.ValueFor.OPENBRACKET, testSubject.GetThis(Token.ValueFor.OPENBRACKET)); Assert.AreEqual(40, testSubject.Position); Assert.AreEqual(", \"val\" varchar(", testSubject.LastPart); Assert.AreEqual(12, testSubject.GetNextAsInt()); Assert.AreEqual(42, testSubject.Position); Assert.AreEqual(", \"val\" varchar(12", testSubject.LastPart); Assert.AreEqual(Token.ValueFor.CLOSEBRACKET, testSubject.GetThis(Token.ValueFor.CLOSEBRACKET)); Assert.AreEqual(43, testSubject.Position); Assert.AreEqual(", \"val\" varchar(12)", testSubject.LastPart); testSubject.SetPartMarker(); Assert.AreEqual(Token.ValueFor.CLOSEBRACKET, testSubject.GetThis(Token.ValueFor.CLOSEBRACKET)); Assert.AreEqual(44, testSubject.Position); Assert.AreEqual(Token.ValueFor.CLOSEBRACKET, testSubject.LastPart); Assert.AreEqual(Token.ValueFor.SEMICOLON, testSubject.GetThis(Token.ValueFor.SEMICOLON)); Assert.AreEqual(45, testSubject.Position); Assert.AreEqual(");", testSubject.LastPart); Assert.AreEqual(string.Empty, testSubject.GetNextAsString()); Assert.AreEqual(45, testSubject.Position); Assert.AreEqual(");", testSubject.LastPart); testSubject.SetPartMarker(); Assert.AreEqual(string.Empty, testSubject.LastPart); }
public void IdentiferChainPredecessor() { Tokenizer testSubject = new Tokenizer("foo.bar.baz"); string token = testSubject.GetNextAsString(); Assert.AreEqual("BAR", testSubject.IdentifierChainPredecessor); testSubject.Reset("bing.foo.\"bar\".baz"); token = testSubject.GetNextAsString(); Assert.AreEqual("bar", testSubject.IdentifierChainPredecessor); }
public void GetPart() { Tokenizer testSubject = new Tokenizer("FOO.BAR AS BAR.FOO"); string actual = testSubject.GetPart(0, "FOO.BAR AS BAR.FOO".Length); Assert.AreEqual("FOO.BAR AS BAR.FOO", actual); testSubject.SetPartMarker(); Assert.AreEqual(0, testSubject.PartMarker); Assert.AreEqual(0, testSubject.Position); actual = testSubject.GetNextAsString(); Assert.AreEqual("BAR", actual); Assert.AreEqual(SqlTokenType.IdentifierChain, testSubject.TokenType); Assert.That(!testSubject.WasIdentifierChainPredecessorDelimited); Assert.AreEqual("FOO", testSubject.IdentifierChainPredecessor); Assert.AreEqual("FOO.BAR ".IndexOf(' '), testSubject.Position); actual = testSubject.GetPart(testSubject.PartMarker, testSubject.Position); Assert.AreEqual("FOO.BAR", actual); testSubject.SetPartMarker(); actual = testSubject.GetNextAsString(); Assert.AreEqual(Token.ValueFor.AS, actual); Assert.AreEqual("FOO.BAR_AS ".IndexOf(' '), testSubject.Position); actual = testSubject.GetPart(testSubject.PartMarker, testSubject.Position); Assert.AreEqual(" AS", actual); }
public void GetNextAsString() { Tokenizer testSubject = new Tokenizer("FOO.BAR"); string actual = testSubject.GetNextAsString(); Assert.AreEqual("BAR", actual); Assert.AreEqual(true, testSubject.WasIdentifierChain); Assert.AreEqual("FOO", testSubject.IdentifierChainPredecessor); }
public void WasThis() { Tokenizer testSubject = new Tokenizer("foo bar \"baz\" foo.bar"); testSubject.GetThis("FOO"); testSubject.GetThis("BAR"); Assert.AreEqual(true, testSubject.WasThis("BAR")); Assert.AreEqual(false, testSubject.WasThis("bar")); Assert.AreEqual(false, testSubject.WasThis(" BAR ")); Assert.AreEqual(false, testSubject.WasThis("NOTBAR")); string name = testSubject.GetNextAsName(); // not for use with delimited identifier. Assert.AreEqual(false, testSubject.WasThis("baz")); Assert.AreEqual(false, testSubject.WasThis("BAZ")); Assert.AreEqual(false, testSubject.WasThis(" baz ")); Assert.AreEqual(false, testSubject.WasThis("notbaz")); string s = testSubject.GetNextAsString(); // not for use with identifier chain. Assert.AreEqual(false, testSubject.WasThis("bar")); Assert.AreEqual(false, testSubject.WasThis("BAR")); Assert.AreEqual(false, testSubject.WasThis(" bar ")); Assert.AreEqual(false, testSubject.WasThis("notbar")); }
public void WasNamedParameter() { Tokenizer testSubject = new Tokenizer("update test set id = @IdParam, val = :ValParam"); Assert.AreEqual(false, testSubject.WasNamedParameter); Assert.AreEqual(string.Empty, testSubject.ParameterName); Assert.AreEqual(' ', testSubject.ParameterNamePrefix); testSubject.GetThis(Token.ValueFor.UPDATE); Assert.AreEqual(false, testSubject.WasNamedParameter); Assert.AreEqual(string.Empty, testSubject.ParameterName); Assert.AreEqual(' ', testSubject.ParameterNamePrefix); testSubject.GetThis("TEST"); Assert.AreEqual(false, testSubject.WasNamedParameter); Assert.AreEqual(string.Empty, testSubject.ParameterName); Assert.AreEqual(' ', testSubject.ParameterNamePrefix); testSubject.GetThis(Token.ValueFor.SET); Assert.AreEqual(false, testSubject.WasNamedParameter); Assert.AreEqual(string.Empty, testSubject.ParameterName); Assert.AreEqual(' ', testSubject.ParameterNamePrefix); testSubject.GetThis("ID"); Assert.AreEqual(false, testSubject.WasNamedParameter); Assert.AreEqual(string.Empty, testSubject.ParameterName); Assert.AreEqual(' ', testSubject.ParameterNamePrefix); testSubject.GetThis(Token.ValueFor.EQUALS); Assert.AreEqual(false, testSubject.WasNamedParameter); Assert.AreEqual(string.Empty, testSubject.ParameterName); Assert.AreEqual(' ', testSubject.ParameterNamePrefix); testSubject.GetNextAsString(); Assert.AreEqual(true, testSubject.WasNamedParameter); Assert.AreEqual("IdParam", testSubject.ParameterName); Assert.AreEqual('@', testSubject.ParameterNamePrefix); testSubject.GetThis(Token.ValueFor.COMMA); Assert.AreEqual(false, testSubject.WasNamedParameter); Assert.AreEqual(string.Empty, testSubject.ParameterName); Assert.AreEqual(' ', testSubject.ParameterNamePrefix); testSubject.GetThis("VAL"); Assert.AreEqual(false, testSubject.WasNamedParameter); Assert.AreEqual(string.Empty, testSubject.ParameterName); Assert.AreEqual(' ', testSubject.ParameterNamePrefix); testSubject.GetThis(Token.ValueFor.EQUALS); Assert.AreEqual(false, testSubject.WasNamedParameter); Assert.AreEqual(string.Empty, testSubject.ParameterName); Assert.AreEqual(' ', testSubject.ParameterNamePrefix); testSubject.GetNextAsString(); Assert.AreEqual(true, testSubject.WasNamedParameter); Assert.AreEqual("ValParam", testSubject.ParameterName); Assert.AreEqual(':', testSubject.ParameterNamePrefix); }