public void CanCombineNonEmptySpecificationWithOther()
        {
            Expression <Func <User, bool> > condition1 = x => x.Person != null;
            Expression <Func <User, bool> > condition2 = x => x.Orders.Count > 1;

            var a = new Query <User>().Where(condition2);
            var b = new Query <User>().Where(condition1);

            var result = SpecificationExtensions.Combine <User>(
                new CustomSpecification <User>(a),
                new CustomSpecification <User>(b));

            var query = (Query)result.Query;

            Assert.Equal(QueryType.Where, query.Parameters.QueryType);
            Assert.Equal(typeof(User), query.Parameters.InType);
            Assert.Equal(typeof(User), query.Parameters.OutType);
            Assert.Equal(condition1, query.Parameters.Expression);

            query = query.Parent;
            Assert.Equal(QueryType.Where, query.Parameters.QueryType);
            Assert.Equal(typeof(User), query.Parameters.InType);
            Assert.Equal(typeof(User), query.Parameters.OutType);
            Assert.Equal(condition2, query.Parameters.Expression);

            query = query.Parent;
            Assert.Equal(QueryType.Empty, query.Parameters.QueryType);
            Assert.Equal(typeof(User), query.Parameters.InType);
            Assert.Equal(typeof(User), query.Parameters.OutType);
            Assert.Null(query.Parameters.Expression);

            Assert.Null(query.Parent);
        }