public void ItShouldNotSupportMoreThanOneExpressionPerField()
        {
            BinaryExpression expression1 = Expression.Equal(Expression.Property(Expression.Constant(new WorkItem()), "Project"), Expression.Constant("myproject"));
            BinaryExpression expression2 = Expression.NotEqual(Expression.Property(Expression.Constant(new WorkItem()), "Project"), Expression.Constant("anotherproject"));

            var visitor = new WorkItemFilterExpressionVisitor(Expression.And(expression1, expression2));

            var node = visitor.Eval();
        }
Ejemplo n.º 2
0
        public IEnumerable<WorkItem> GetAll(ODataQueryOperation operation)
        {
            if (operation == null)
            {
                throw new ArgumentNullException("operation");
            }

            var parameters = new WorkItemFilterExpressionVisitor(operation.FilterExpression).Eval();
            return this.proxy.GetWorkItemsByProjectCollection(parameters);
        }
        public void ItShouldSupportInequalityOperator()
        {
            BinaryExpression expression = Expression.NotEqual(Expression.Property(Expression.Constant(new WorkItem()), "Project"), Expression.Constant("myproject"));
            var visitor = new WorkItemFilterExpressionVisitor(expression);
            var node = visitor.Eval();

            Assert.AreEqual(node.Key, "Project");
            Assert.AreEqual(node.Sign, FilterExpressionType.NotEqual);
            Assert.AreEqual(node.Value, "myproject");
        }
        public void ItShouldSupportAndOperator()
        {
            var expression1 = Expression.Equal(Expression.Property(Expression.Constant(new WorkItem()), "Project"), Expression.Constant("myproject"));
            var expression2 = Expression.NotEqual(Expression.Property(Expression.Constant(new WorkItem()), "Title"), Expression.Constant("Bug in main page"));

            var visitor = new WorkItemFilterExpressionVisitor(Expression.And(expression1, expression2));

            var firstNode = visitor.Eval();
            Assert.AreEqual(firstNode.Key, "Project");
            Assert.AreEqual(firstNode.Sign, FilterExpressionType.Equal);
            Assert.AreEqual(firstNode.Value, "myproject");

            var secondNode = firstNode.NextNode;
            Assert.AreEqual(secondNode.Key, "Title");
            Assert.AreEqual(secondNode.Sign, FilterExpressionType.NotEqual);
            Assert.AreEqual(secondNode.Value, "Bug in main page");
            Assert.AreEqual(secondNode.NodeRelationship, FilterNodeRelationship.And);
        }
Ejemplo n.º 5
0
        public IEnumerable<WorkItem> GetWorkItemsByBuild(ODataSelectManyQueryOperation operation)
        {
            if (operation == null)
            {
                throw new ArgumentNullException("operation");
            }

            var parameters = new WorkItemFilterExpressionVisitor(operation.FilterExpression).Eval();
            return this.proxy.GetWorkItemsByBuild(operation.Keys["project"], operation.Keys["number"], parameters);
        }
        public void ItShouldSupportInequalityOperators()
        {
            var someDate = new DateTime(2011, 2, 3, 4, 5, 6);
            var anotherDate = new DateTime(2011, 6, 7, 8, 9, 10);

            BinaryExpression lessThanExpression = Expression.LessThan(Expression.Property(Expression.Constant(new WorkItem()), "Revision"), Expression.Constant(1));
            BinaryExpression lessThanOrEqualExpression = Expression.LessThanOrEqual(Expression.Property(Expression.Constant(new WorkItem()), "ChangedDate"), Expression.Constant(someDate));
            BinaryExpression greaterThanOrEqualExpression = Expression.GreaterThanOrEqual(Expression.Property(Expression.Constant(new WorkItem()), "Id"), Expression.Constant(3));
            BinaryExpression greaterThanExpression = Expression.GreaterThan(Expression.Property(Expression.Constant(new WorkItem()), "CreatedDate"), Expression.Constant(anotherDate));

            var visitor = new WorkItemFilterExpressionVisitor(Expression.OrElse(
                    Expression.OrElse(lessThanExpression, lessThanOrEqualExpression),
                    Expression.OrElse(greaterThanOrEqualExpression, greaterThanExpression)));

            var node = visitor.Eval();

            Assert.AreEqual("Revision", node.Key);
            Assert.AreEqual(FilterExpressionType.LessThan, node.Sign);
            Assert.AreEqual("1", node.Value);

            node = node.NextNode;
            Assert.AreEqual("ChangedDate", node.Key);
            Assert.AreEqual(FilterExpressionType.LessThanOrEqual, node.Sign);
            Assert.AreEqual(someDate.ToString(), node.Value);

            node = node.NextNode;
            Assert.AreEqual("Id", node.Key);
            Assert.AreEqual(FilterExpressionType.GreaterThanOrEqual, node.Sign);
            Assert.AreEqual("3", node.Value);

            node = node.NextNode;
            Assert.AreEqual("CreatedDate", node.Key);
            Assert.AreEqual(FilterExpressionType.GreaterThan, node.Sign);
            Assert.AreEqual(anotherDate.ToString(), node.Value);
        }