Exemple #1
0
        public void CovariantSubqueryTest()
        {
            IQueryable <object> subQueryable = (QuerySource.Select(c => c)).Distinct();
            var queryExpression = ExpressionHelper.MakeExpression(() => (
                                                                      from o in subQueryable
                                                                      select o));

            var queryModel = QueryParser.GetParsedQuery(queryExpression);

            Assert.That(queryModel.GetOutputDataInfo().DataType, Is.SameAs(typeof(IQueryable <object>)));

            var subQuery = ((SubQueryExpression)queryModel.MainFromClause.FromExpression).QueryModel;

            var selectOutputInfo = subQuery.SelectClause.GetOutputDataInfo();

            Assert.That(selectOutputInfo.ItemExpression.Type, Is.SameAs(typeof(Cook)));
            Assert.That(selectOutputInfo.ResultItemType, Is.SameAs(typeof(Cook)));
            Assert.That(selectOutputInfo.DataType, Is.SameAs(typeof(IQueryable <Cook>)));

            var distinctOperator           = (DistinctResultOperator)subQuery.ResultOperators.Single();
            var distinctOperatorOutputInfo = (StreamedSequenceInfo)distinctOperator.GetOutputDataInfo(selectOutputInfo);

            Assert.That(distinctOperatorOutputInfo.ItemExpression.Type, Is.SameAs(typeof(Cook)));
            Assert.That(distinctOperatorOutputInfo.ResultItemType, Is.SameAs(typeof(Cook)));
            Assert.That(distinctOperatorOutputInfo.DataType, Is.SameAs(typeof(IQueryable <Cook>)));

            var queryOutputInfo = (StreamedSequenceInfo)subQuery.GetOutputDataInfo();

            Assert.That(queryOutputInfo.ItemExpression.Type, Is.SameAs(typeof(Cook)));
            Assert.That(queryOutputInfo.ResultItemType, Is.SameAs(typeof(Cook)));
            Assert.That(queryOutputInfo.DataType, Is.SameAs(typeof(IQueryable <Cook>)));
        }
Exemple #2
0
        public void DelegateAsSelector()
        {
            Func <Cook, string> expression = c => c.FirstName;
            var query = QuerySource.Select(c => c.Assistants.Select(expression));

            QueryParser.GetParsedQuery(query.Expression);
        }
Exemple #3
0
        public void Transformation_ViaAttributedInstanceProperty()
        {
            var query = QuerySource.Select(c => c.WeightInLbs);

            var queryModel = QueryParser.GetParsedQuery(query.Expression);

            var selectClause = queryModel.SelectClause;

            CheckResolvedExpression <Cook, double> (selectClause.Selector, queryModel.MainFromClause, c => c.Weight * 2.20462262);
        }
Exemple #4
0
        public void Transformation_ViaAttributedInstanceMethod()
        {
            var query = QuerySource.Select(c => c.GetFullName());

            var queryModel = QueryParser.GetParsedQuery(query.Expression);

            var selectClause = queryModel.SelectClause;

            CheckResolvedExpression <Cook, string> (selectClause.Selector, queryModel.MainFromClause, c => c.FirstName + " " + c.Name);
        }
Exemple #5
0
        public void Transformation_IntroducingSubQuery()
        {
            var query = QuerySource.Select(c => c.GetAssistantCount());

            var queryModel = QueryParser.GetParsedQuery(query.Expression);

            var selectClause = queryModel.SelectClause;

            Assert.That(selectClause.Selector, Is.TypeOf <SubQueryExpression>());
            var subQueryModel = ((SubQueryExpression)selectClause.Selector).QueryModel;

            CheckResolvedExpression <Cook, IQueryable <Cook> > (subQueryModel.MainFromClause.FromExpression, queryModel.MainFromClause, c => c.Assistants);
            Assert.That(subQueryModel.ResultOperators, Has.Some.TypeOf <CountResultOperator>());
        }
Exemple #6
0
        public void Transformation_ViaAttributedIndexedProperty()
        {
            var query = QuerySource.Select(c => c[7]);

            var queryModel = QueryParser.GetParsedQuery(query.Expression);

            var selectClause = queryModel.SelectClause;

            Assert.That(selectClause.Selector, Is.TypeOf <SubQueryExpression>());
            var subQueryModel = ((SubQueryExpression)selectClause.Selector).QueryModel;

            CheckResolvedExpression <Cook, IQueryable <Cook> > (subQueryModel.MainFromClause.FromExpression, queryModel.MainFromClause, c => c.Assistants);
            Assert.That(subQueryModel.ResultOperators[0], Is.TypeOf <TakeResultOperator> ());
            Assert.That(
                ((TakeResultOperator)subQueryModel.ResultOperators[0]).Count, Is.InstanceOf <ConstantExpression>().With.Property("Value").EqualTo(7));
            Assert.That(subQueryModel.ResultOperators[1], Is.TypeOf <FirstResultOperator>());
        }