public void ItShouldNotSupportOrOperator()
        {
            BinaryExpression expression1 = Expression.Equal(Expression.Property(Expression.Constant(new Changeset()), "Comment"), Expression.Constant("updating the config file"));
            BinaryExpression expression2 = Expression.NotEqual(Expression.Property(Expression.Constant(new Changeset()), "Committer"), Expression.Constant("johndoe"));

            var visitor = new ChangesetFilterExpressionVisitor(Expression.OrElse(expression1, expression2));

            var node = visitor.Eval();
        }
        public void ItShouldNotSupportMoreThanOneExpressionPerField()
        {
            BinaryExpression expression1 = Expression.Equal(Expression.Property(Expression.Constant(new Changeset()), "Comment"), Expression.Constant("updating the config file"));
            BinaryExpression expression2 = Expression.NotEqual(Expression.Property(Expression.Constant(new Changeset()), "Comment"), Expression.Constant("deleting a folder"));

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

            var node = visitor.Eval();
        }
        public void ItShouldSupportEqualityOperator()
        {
            BinaryExpression expression = Expression.Equal(Expression.Property(Expression.Constant(new Changeset()), "Comment"), Expression.Constant("updating the config file"));
            var visitor = new ChangesetFilterExpressionVisitor(expression);
            var node = visitor.Eval();

            Assert.AreEqual(node.Key, "Comment");
            Assert.AreEqual(node.Sign, FilterExpressionType.Equal);
            Assert.AreEqual(node.Value, "updating the config file");
        }
        public IEnumerable<Changeset> GetChangesetsByBranch(ODataSelectManyQueryOperation operation)
        {
            if (operation == null)
            {
                throw new ArgumentNullException("operation");
            }

            var parameters = new ChangesetFilterExpressionVisitor(operation.FilterExpression).Eval();
            int topRequestValue = this.GetTopRequestValue(operation, parameters);

            return this.proxy.GetChangesetsByBranch(operation.Key, parameters, topRequestValue);
        }
        public void ItShouldSupportAndOperator()
        {
            BinaryExpression expression1 = Expression.Equal(Expression.Property(Expression.Constant(new Changeset()), "Comment"), Expression.Constant("updating the config file"));
            BinaryExpression expression2 = Expression.NotEqual(Expression.Property(Expression.Constant(new Changeset()), "Committer"), Expression.Constant("johndoe"));

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

            var firstNode = visitor.Eval();
            Assert.AreEqual(firstNode.Key, "Comment");
            Assert.AreEqual(firstNode.Sign, FilterExpressionType.Equal);
            Assert.AreEqual(firstNode.Value, "updating the config file");

            var secondNode = firstNode.NextNode;
            Assert.AreEqual(secondNode.Key, "Committer");
            Assert.AreEqual(secondNode.Sign, FilterExpressionType.NotEqual);
            Assert.AreEqual(secondNode.Value, "johndoe");
        }