internal override BsonDocument TranslateExpressionToFilter <TDocument>(
     Expression <Func <TDocument, bool> > expression,
     IBsonSerializer <TDocument> documentSerializer,
     IBsonSerializerRegistry serializerRegistry)
 {
     return(PredicateTranslator.Translate <TDocument>(expression, documentSerializer, serializerRegistry));
 }
        private void TranslateWhere(WhereExpression node)
        {
            Translate(node.Source);

            var predicateValue = PredicateTranslator.Translate(node.Predicate, _serializerRegistry);

            _stages.Add(new BsonDocument("$match", predicateValue));
        }
        public void TranslateEnum_ShouldConvertToValueB()
        {
            Expression <Func <Dummy, bool> > predicateExpression = (d => d.SomeEnum == EnumDummy.B);
            int?queryId;
            var translatedPredicate = PredicateTranslator.Translate(predicateExpression, out queryId);

            Assert.AreEqual(translatedPredicate, "SomeEnum=1");
        }
        public void Any_ShouldConvert_To_Where()
        {
            Expression <Func <Dummy, bool> > predicateExpression = (d => d.SomeValueList.Any(x => x.SomeInt == 100));
            int?queryId;
            var translatedPredicate = PredicateTranslator.Translate(predicateExpression, out queryId);

            Assert.AreEqual(translatedPredicate, "!Dummy.SomeInt=100");
        }
        private void VisitWhere(WhereExpression node)
        {
            Visit(node.Source);

            var renderedPredicate = PredicateTranslator.Translate(node.Predicate, _serializerRegistry);

            _stages.Add(new BsonDocument("$match", renderedPredicate));
        }
        public void Assert <T>(IMongoCollection <T> collection, Expression <Func <T, bool> > filter, int expectedCount, BsonDocument expectedFilter)
        {
            var serializer     = BsonSerializer.SerializerRegistry.GetSerializer <T>();
            var filterDocument = PredicateTranslator.Translate(filter, serializer, BsonSerializer.SerializerRegistry);

            var list = collection.FindSync(filterDocument).ToList();

            filterDocument.Should().Be(expectedFilter);
            list.Count.Should().Be(expectedCount);
        }
示例#7
0
        public void Assert(Expression <Func <Root, bool> > filter, int expectedCount, string expectedFilter)
        {
            var serializer     = BsonSerializer.SerializerRegistry.GetSerializer <Root>();
            var filterDocument = PredicateTranslator.Translate(filter, serializer, BsonSerializer.SerializerRegistry);

            var list = __collection.FindSync(filterDocument).ToList();

            filterDocument.Should().Be(BsonDocument.Parse(expectedFilter));
            list.Count.Should().Be(expectedCount);
        }
示例#8
0
        public void Equals_with_non_nullable_field_and_nullable_value()
        {
            var value = (int?)null;
            Expression <Func <Root, bool> > filter = d => d.Id == value;
            var serializer = BsonSerializer.SerializerRegistry.GetSerializer <Root>();

            var exception = Record.Exception(() => PredicateTranslator.Translate(filter, serializer, BsonSerializer.SerializerRegistry));

            exception.Should().BeOfType <ArgumentException>();
        }
        public void Assert(Expression <Func <Root, bool> > filter, int expectedCount, BsonDocument expectedFilter)
        {
            var serializer     = BsonSerializer.SerializerRegistry.GetSerializer <Root>();
            var filterDocument = PredicateTranslator.Translate(filter, serializer, BsonSerializer.SerializerRegistry);

            using (var cursor = _collection.FindAsync(filterDocument).GetAwaiter().GetResult())
            {
                var list = cursor.ToListAsync().GetAwaiter().GetResult();
                filterDocument.Should().Be(expectedFilter);
                list.Count.Should().Be(expectedCount);
            }
        }
示例#10
0
 /// <inheritdoc />
 public override BsonDocument Render(IBsonSerializer <TDocument> documentSerializer, IBsonSerializerRegistry serializerRegistry)
 {
     return(PredicateTranslator.Translate <TDocument>(_expression, documentSerializer, serializerRegistry));
 }