public void Parse_WhenDescExpression_SortingDirectionBecomesDesc()
        {
            var lambda = new OrderByDescExpression(Reflect <MyClass> .LambdaFrom(m => m.String1));

            var parsedLambda = CreateParser().Parse(new[] { lambda });

            var node = (SortingNode)parsedLambda.Nodes[0];

            Assert.AreEqual(SortDirections.Desc, node.Direction);
        }
        public void Parse_WhenTwoPropertyLambdasArePassed_ExactlyTwoSortingNodeIsReturned()
        {
            var lambda1 = new OrderByAscExpression(Reflect <MyClass> .LambdaFrom(m => m.String1));
            var lambda2 = new OrderByDescExpression(Reflect <MyClass> .LambdaFrom(m => m.Int1));

            var parsedLambda = CreateParser().Parse(new OrderByExpression[] { lambda1, lambda2 });

            Assert.AreEqual(2, parsedLambda.Nodes.Length);
            Assert.IsInstanceOf(typeof(SortingNode), parsedLambda.Nodes[0]);
            Assert.IsInstanceOf(typeof(SortingNode), parsedLambda.Nodes[1]);
        }
        public void Parse_WhenAscAndDescExpressionOnSameMember_SortingDirectionBecomesBothAscAndDescInCorrectOrder()
        {
            var lambda1 = new OrderByAscExpression(Reflect <MyClass> .LambdaFrom(m => m.String1));
            var lambda2 = new OrderByDescExpression(Reflect <MyClass> .LambdaFrom(m => m.String1));

            var parsedLambda = CreateParser()
                               .Parse(new OrderByExpression [] { lambda1, lambda2 });

            Assert.AreEqual(2, parsedLambda.Nodes.Length);

            var node1 = (SortingNode)parsedLambda.Nodes[0];

            Assert.AreEqual(SortDirections.Asc, node1.Direction);

            var node2 = (SortingNode)parsedLambda.Nodes[1];

            Assert.AreEqual(SortDirections.Desc, node2.Direction);
        }