public void ParseWhere_WhenSingleWhereStatement_ExpectWhereNodeBack() { // Arrange var mockWhereStatementParser = new Mock <IWhereStatementParser>(); mockWhereStatementParser .Setup(r => r.ParseStatement(It.IsAny <string>(), It.IsAny <string>())) .Returns(new EqualsOperator { Statement = "name:test", Name = "name", CaseInsensitive = false, Value = "test", IsNot = false }); var whereParser = new WhereParser(mockWhereStatementParser.Object, new ParserOptions()); // Act var stopwatch = Stopwatch.StartNew(); var whereNode = whereParser.ParseWhere("name:test"); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); var expected = new WhereNode { Statement = new WhereStatement { Value = new EqualsOperator { Statement = "name:test", Name = "name", CaseInsensitive = false, Value = "test", IsNot = false }, As = null, } }; whereNode.ShouldDeepEqual(expected); }
public void ParseWhere_WhenAndStatementWithAs_ExpectWhereNodesBack() { // Arrange var mockWhereStatementParser = new Mock <IWhereStatementParser>(); mockWhereStatementParser .SetupSequence(r => r.ParseStatement(It.IsAny <string>(), It.IsAny <string>())) .Returns(new EqualsOperator { Statement = "name:test", Name = "name", CaseInsensitive = false, Value = "test", IsNot = false }) .Returns(new EqualsOperator { Statement = "name2:test2", Name = "name2", CaseInsensitive = false, Value = "test2", IsNot = false }); var whereParser = new WhereParser(mockWhereStatementParser.Object, new ParserOptions()); // Act var stopwatch = Stopwatch.StartNew(); var whereNode = whereParser.ParseWhere("name:test as string and name2:test2"); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); var expected1 = new WhereNode { Statement = new WhereStatement { Value = new EqualsOperator { Statement = "name2:test2", Name = "name2", CaseInsensitive = false, Value = "test2", IsNot = false }, As = null, } }; var expected2 = new WhereNode { Statement = new WhereStatement { Value = new EqualsOperator { Statement = "name:test", Name = "name", CaseInsensitive = false, Value = "test", IsNot = false }, As = "string", }, Conjunctive = Conjunctives.And, Next = expected1, }; whereNode.ShouldDeepEqual(expected2); }
public void ParseWhere_WhenNullWhereStatement_ExpectNull() { // Arrange var mockWhereStatementParser = new Mock <IWhereStatementParser>(); var whereParser = new WhereParser(mockWhereStatementParser.Object, new ParserOptions()); // Act var stopwatch = Stopwatch.StartNew(); var whereNode = whereParser.ParseWhere(null); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); Assert.That(whereNode, Is.Null); }
/// <summary> /// Initializes this instance. /// </summary> /// <typeparam name="TEntity">The type of the entity.</typeparam> /// <param name="parserOptions">The parser options.</param> /// <returns>The IEntityParser.</returns> private static object Initialize <TEntity>(ParserOptions parserOptions) { var tokenSplitter = new TokenSplitter(); var rangeParser = new RangeParser(); var equalsParser = new EqualsParser(); var entityParser = new EntityParser <TEntity>(); var typeSplitter = new TypeSplitter(); var whereStatementParser = new WhereStatementParser <TEntity>(rangeParser, equalsParser, entityParser, typeSplitter); var whereParser = new WhereParser(whereStatementParser, parserOptions); var orderByParser = new OrderByParser <TEntity>(entityParser); var pageParser = new PageParser(); var selectParser = new SelectParser <TEntity>(entityParser); return(new StatementParser(tokenSplitter, whereParser, pageParser, orderByParser, selectParser)); }
public void ParseWhere_WhenTwoParts_ExpectBinaryNode() { // Arrange var rangeParser = new RangeParser(); var equalsParser = new EqualsParser(); var entityParser = new EntityParser <CustomEntity>(); var typeSplitter = new TypeSplitter(); var whereStatementParser = new WhereStatementParser <CustomEntity>(rangeParser, equalsParser, entityParser, typeSplitter); var whereParser = new WhereParser(whereStatementParser, new ParserOptions()); // Act var stopwatch = Stopwatch.StartNew(); var whereNode = whereParser.ParseWhere("testKey:testValue and testKey2:[23,2]"); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); var next1 = new WhereNode { Conjunctive = Conjunctives.None, Next = null, Statement = new WhereStatement { As = null, Value = new RangeOperator { Statement = "testKey2:[23,2]", Name = "testKey2", Lower = 23, LowerInclusive = false, Upper = 2, UpperInclusive = false } } }; var expected = new WhereNode { Conjunctive = Conjunctives.And, Next = next1, Statement = new WhereStatement { As = null, Value = new EqualsOperator { Statement = "testKey:testValue", Name = "testKey", CaseInsensitive = false, Value = "testValue", IsNot = false } } }; whereNode.ShouldDeepEqual(expected); }
public void ParseWhere_WhenSimpleQuery_ExpectNodeBack() { // Arrange var rangeParser = new RangeParser(); var equalsParser = new EqualsParser(); var entityParser = new EntityParser <CustomEntity>(); var typeSplitter = new TypeSplitter(); var whereStatementParser = new WhereStatementParser <CustomEntity>(rangeParser, equalsParser, entityParser, typeSplitter); var whereParser = new WhereParser(whereStatementParser, new ParserOptions()); // Act var stopwatch = Stopwatch.StartNew(); var whereNode = whereParser.ParseWhere("testKey:testValue"); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); var equalsOperator = whereNode; Assert.That(equalsOperator, Is.Not.Null); var expected = new WhereNode { Conjunctive = Conjunctives.None, Next = null, Statement = new WhereStatement { As = null, Value = new EqualsOperator { Statement = "testKey:testValue", Name = "testKey", CaseInsensitive = false, Value = "testValue", IsNot = false } } }; whereNode.ShouldDeepEqual(expected); }
public ExpressionParsers() { IncludeParser = new IncludeParser(); WhereParser = new WhereParser(); OrderByParser = new OrderByParser(); }