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); }