Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        /// <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));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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();
		}