Exemple #1
0
        public static IQueryExpression Parse(string query)
        {
            // first check for boolean operators
            Regex r = new Regex(QueryParser.BooleanOperatorRegEx);
            Match m = r.Match(query);

            if (m.Success)
            {
                BooleanQueryExpression expression = new BooleanQueryExpression()
                {
                    Left = QueryParser.Parse(query.Substring(0, m.Index)),
                    Operator = (BooleanOperator)Enum.Parse(typeof(BooleanOperator), m.Value.Trim()),
                    Right = QueryParser.Parse(query.Substring(m.Index + m.Length))
                };
                return expression;
            }
            else
            {
                return BuildComparisonExpression(query);
            }
        }
        public void GetMessagesSQLCommandTest_MultipartBooleanExpression()
        {
            // Arrange
            IQueryExpression expression = new BooleanQueryExpression
                                          {
                Left = new ComparisonQueryExpression
                       {
                           Field = "app",
                           Comparator = ExpressionComparator.Equals,
                           Value = "Echo"
                       },
                Operator = BooleanOperator.AND,
                Right = new BooleanQueryExpression
                        {
                    Left = new ComparisonQueryExpression
                           {
                               Field = "host",
                               Comparator = ExpressionComparator.Equals,
                               Value = "app1"
                           },
                    Operator = BooleanOperator.OR,
                    Right = new ComparisonQueryExpression
                            {
                                Field = "host",
                                Comparator = ExpressionComparator.Equals,
                                Value = "app2"
                            }
                }
            };

            // Act
            var actual = SQLMonitorStoreHelper.GetMessagesSQLCommand(expression);

            // Assert
            Assert.AreEqual(2, actual.Parameters.Count);
            Assert.AreEqual("@field1", actual.Parameters[0].ParameterName);
            Assert.AreEqual("app", actual.Parameters[0].Value);
            Assert.AreEqual("@value1", actual.Parameters[1].ParameterName);
            Assert.AreEqual("Echo", actual.Parameters[1].Value);
        }
Exemple #3
0
        public void ParseTest_ThreePartBooleanExpression()
        {
            // Arrange
            const string query = "app:Echo AND host:app1 OR host:app2";

            IQueryExpression expected = new BooleanQueryExpression
                                        {
                Left = new ComparisonQueryExpression { Field = "app", Comparator = ExpressionComparator.Equals, Value = "Echo" },
                Operator = BooleanOperator.AND,
                Right = new BooleanQueryExpression
                        {
                    Left = new ComparisonQueryExpression { Field = "host", Comparator = ExpressionComparator.Equals, Value = "app1" },
                    Operator = BooleanOperator.OR,
                    Right = new ComparisonQueryExpression { Field = "host", Comparator = ExpressionComparator.Equals, Value = "app2" }
                }
            };

            // Act
            IQueryExpression actual = QueryParser.Parse(query);

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TranslateQueryExpressionToWhereClauseTest_TwoPartBooleanExpresion()
        {
            // Arrange
            IQueryExpression expression = new BooleanQueryExpression
                                          {
                Left = new ComparisonQueryExpression { Field = "app", Comparator = ExpressionComparator.Equals, Value = "Echo" },
                Operator = BooleanOperator.AND,
                Right = new ComparisonQueryExpression { Field = "host", Comparator = ExpressionComparator.Equals, Value = "app2" }
            };

            const string expected = "([f0].[Value] = @vf0 AND [f0].[Field] = @ff0)" +
                                    " AND ([f1].[Value] = @vf1 AND [f1].[Field] = @ff1)";

            var parameters = new Dictionary<string, object>();
            var fieldTableAliases = new List<string>();

            // Act
            var actual = SQLMonitorStoreHelper.TranslateQueryExpressionToWhereClause(expression, parameters, fieldTableAliases);

            // Assert
            Assert.AreEqual(expected, actual);
            Assert.AreEqual("app", parameters["@ff0"]);
            Assert.AreEqual("Echo", parameters["@vf0"]);
            Assert.AreEqual("host", parameters["@ff1"]);
            Assert.AreEqual("app2", parameters["@vf1"]);
        }