Ejemplo n.º 1
0
 public void CanFetchTwoColumns()
 {
     var spec = Customer.Query.Fetch(x => x.Address).Fetch(x => x.ContactName);
     var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec);
     Assert.AreEqual("q.Fetch(x => x.Address).Fetch(x => x.ContactName)",
         queryable.Expression.ToString());
 }
        public void CanRecordTwoLevelLinqExpressionsWithProjection()
        {
            var queryable = new EmptyQueryable <DateTime>(Parameter <DateTime>("q"));
            var newQuery  = queryable.Where(x => x > DateTime.Now).Distinct().Select(x => x.Day);

            newQuery.Expression.ToString().Should().Be("q.Where(x => (x > DateTime.Now)).Distinct().Select(x => x.Day)");
        }
Ejemplo n.º 3
0
 public void CanFetchThenTwoColumns()
 {
     var spec = Product.Query.Fetch(x => x.Category).ThenFetch(x => x.Name);
     var queryable = new EmptyQueryable<Product>("q").ApplySpecs(spec);
     Assert.AreEqual("q.Fetch(x => x.Category).ThenFetch(x => x.Name)",
         queryable.Expression.ToString());
 }
        public void CanRecordTwoLevelLinqExpressions()
        {
            var queryable = new EmptyQueryable <int>(Parameter <int>("q"));
            var newQuery  = queryable.Where(x => x > 2).Distinct();

            newQuery.Expression.ToString().Should().Be("q.Where(x => (x > 2)).Distinct()");
        }
Ejemplo n.º 5
0
 public void CanFilterWithStackReference()
 {
     string value = "asd";
     var spec = Customer.Query.Filter(x => x.CompanyName == value);
     var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec);
     queryable.Expression.ToString().Should().Be("q.Where(x => (x.CompanyName == \"asd\"))");
 }
Ejemplo n.º 6
0
 public void CanOrderByTwoColumnsWithSecondDescending()
 {
     var spec = Customer.Do.OrderBy(x => x.Address).ThenByDesc(x => x.ContactName);
     var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec);
     Assert.AreEqual("q.OrderBy(x => x.Address).ThenByDescending(x => x.ContactName)",
         queryable.Expression.ToString());
 }
Ejemplo n.º 7
0
 public void CanFilterWithStackReference()
 {
     string value = "asd";
     int a = 2, b = 10;
     var spec = Customer.Query.Expr(q => q.Where(x => x.CompanyName == value).Skip(a).Take(b));
     var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec);
     queryable.Expression.ToString().Should().Be("q.Where(x => (x.CompanyName == \"asd\")).Skip(2).Take(10)");
 }
        public void CanRecordLinqExpressionsWithOrderBy()
        {
            var queryable = new EmptyQueryable <DateTime>(Parameter <DateTime>("q"));
            var newQuery  = queryable.OrderBy(x => x.Day);

            Assert.AreEqual("q.OrderBy(x => x.Day)",
                            newQuery.Expression.ToString());
        }
        public void CanRecordTwoLevelLinqExpressionsWithAggregate()
        {
            var queryable = new EmptyQueryable <DateTime>(Parameter <DateTime>("q"));
            var newQuery  = queryable.Where(x => x > DateTime.Now).Distinct().GroupBy(x => x.Day).Select(x => x.Max());

            Assert.AreEqual("q.Where(x => (x > DateTime.Now)).Distinct().GroupBy(x => x.Day).Select(x => x.Max())",
                            newQuery.Expression.ToString());
        }
Ejemplo n.º 10
0
        public void CanSerializeFilter()
        {
            var spec = Customer.Query.Expr(q => q.Where(x => x.CompanyName == "asd"));
            var spec2 = SimpleSerializer.Binary().RoundTrip(spec);

            Assert.AreNotSame(spec, spec2);

            var queryable1 = new EmptyQueryable<Customer>("q").ApplySpecs(spec);
            var queryable2 = new EmptyQueryable<Customer>("q").ApplySpecs(spec2);

            queryable2.Expression.ToString().Should().Be(queryable1.Expression.ToString());
        }
Ejemplo n.º 11
0
        public void CanImplicitConvertExpressionToSpecBuilder()
        {
            Expression<Func<IQueryable<int>, IQueryable<int>>> expr =
                q => q.Where(x => x % 2 == 0).Reverse();

            SpecBuilder<int> spec = expr;

            IQueryable<int> queryable = new EmptyQueryable<int>("h");
            queryable = queryable.ApplySpecs(spec);

            queryable.Expression.ToString().Should().Be(
                "h.Where(x => ((x % 2) == 0)).Reverse()");
        }
Ejemplo n.º 12
0
 public void CanFetchManyByFirstColumn()
 {
     var spec = Category.Query.FetchMany(x => x.Products);
     var queryable = new EmptyQueryable<Category>("q").ApplySpecs(spec);
     queryable.Expression.ToString().Should().Be("q.FetchMany(x => x.Products)");
 }
Ejemplo n.º 13
0
 public void CanFetchByFirstColumn()
 {
     var spec = Customer.Query.Fetch(x => x.Address);
     var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec);
     queryable.Expression.ToString().Should().Be("q.Fetch(x => x.Address)");
 }
Ejemplo n.º 14
0
 public void CanSimpleFilter()
 {
     var spec = Customer.Query.Expr(q => q.Where(x => x.CompanyName == "asd").Skip(2).Take(10));
     var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec);
     queryable.Expression.ToString().Should().Be("q.Where(x => (x.CompanyName == \"asd\")).Skip(2).Take(10)");
 }
Ejemplo n.º 15
0
 public void CanTakeAndSkip()
 {
     var spec = Customer.Do.Take(10).Skip(11);
     var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec);
     queryable.Expression.ToString().Should().Be("q.Take(10).Skip(11)");
 }
Ejemplo n.º 16
0
 public void CanOrderByFirstColumnDesc()
 {
     var spec = Customer.Do.OrderByDesc(x => x.Address);
     var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec);
     queryable.Expression.ToString().Should().Be("q.OrderByDescending(x => x.Address)");
 }