Example #1
0
        public void TestWhereDContainsKeyX()
        {
            var query = from c in _collection.AsQueryable <C>()
                        where c.D.ContainsKey("x")
                        select c;

            var translatedQuery = MongoQueryTranslator.Translate(query);

            Assert.IsInstanceOf <SelectQuery>(translatedQuery);
            Assert.AreSame(_collection, translatedQuery.Collection);
            Assert.AreSame(typeof(C), translatedQuery.DocumentType);

            var selectQuery = (SelectQuery)translatedQuery;

            Assert.AreEqual("(C c) => c.D.ContainsKey(\"x\")", ExpressionFormatter.ToString(selectQuery.Where));
            Assert.IsNull(selectQuery.OrderBy);
            Assert.IsNull(selectQuery.Projection);
            Assert.IsNull(selectQuery.Skip);
            Assert.IsNull(selectQuery.Take);

            Assert.AreEqual("{ \"D.x\" : { \"$exists\" : true } }", selectQuery.BuildQuery().ToJson());
            Assert.AreEqual(1, query.ToList().Count());
        }
Example #2
0
        public void TestWhereEEqualsA()
        {
            var query = from c in _collection.AsQueryable <C>()
                        where c.E == E.A
                        select c;

            var translatedQuery = MongoQueryTranslator.Translate(query);

            Assert.IsInstanceOf <SelectQuery>(translatedQuery);
            Assert.AreSame(_collection, translatedQuery.Collection);
            Assert.AreSame(typeof(C), translatedQuery.DocumentType);

            var selectQuery = (SelectQuery)translatedQuery;

            Assert.AreEqual("(C c) => ((Nullable<Int32>)c.E == (Nullable<Int32>)1)", ExpressionFormatter.ToString(selectQuery.Where));
            Assert.IsNull(selectQuery.OrderBy);
            Assert.IsNull(selectQuery.Projection);
            Assert.IsNull(selectQuery.Skip);
            Assert.IsNull(selectQuery.Take);

            Assert.AreEqual("{ \"e\" : \"A\" }", selectQuery.BuildQuery().ToJson());
            Assert.AreEqual(1, Consume(query));
        }
        public void TestWhereXEqualsNull()
        {
            var query = from c in __collection.AsQueryable <C>()
                        where c.X == null
                        select c;

            var translatedQuery = MongoQueryTranslator.Translate(query);

            Assert.IsType <SelectQuery>(translatedQuery);
            Assert.Same(__collection, translatedQuery.Collection);
            Assert.Same(typeof(C), translatedQuery.DocumentType);

            var selectQuery = (SelectQuery)translatedQuery;

            Assert.Equal("(C c) => (c.X == (Nullable<Int32>)null)", ExpressionFormatter.ToString(selectQuery.Where));
            Assert.Null(selectQuery.OrderBy);
            Assert.Null(selectQuery.Projection);
            Assert.Null(selectQuery.Skip);
            Assert.Null(selectQuery.Take);

            Assert.Equal("{ \"x\" : null }", selectQuery.BuildQuery().ToJson());
            Assert.Equal(4, Consume(query));
        }
        public void TestWhereJContainsKeyX()
        {
            var query = from c in __collection.AsQueryable <C>()
                        where c.J.Contains("x")
                        select c;

            var translatedQuery = MongoQueryTranslator.Translate(query);

            Assert.IsType <SelectQuery>(translatedQuery);
            Assert.Same(__collection, translatedQuery.Collection);
            Assert.Same(typeof(C), translatedQuery.DocumentType);

            var selectQuery = (SelectQuery)translatedQuery;

            Assert.Equal("(C c) => c.J.Contains(\"x\")", ExpressionFormatter.ToString(selectQuery.Where));
            Assert.Null(selectQuery.OrderBy);
            Assert.Null(selectQuery.Projection);
            Assert.Null(selectQuery.Skip);
            Assert.Null(selectQuery.Take);

            var ex = Assert.Throws <NotSupportedException>(() => { selectQuery.BuildQuery(); });

            Assert.Equal("Contains in a LINQ query is only supported for DictionaryRepresentation ArrayOfDocuments or Document, not ArrayOfArrays.", ex.Message);
        }
Example #5
0
        public void TestWhereEEqualsA()
        {
            RequireEnvironment.Check().EnvironmentVariable("MONO"); // Does not pass on Mono 3.2.5. Excluding for now.
            var query = from c in __collection.AsQueryable <C>()
                        where c.E == E.A
                        select c;

            var translatedQuery = MongoQueryTranslator.Translate(query);

            Assert.IsType <SelectQuery>(translatedQuery);
            Assert.Same(__collection, translatedQuery.Collection);
            Assert.Same(typeof(C), translatedQuery.DocumentType);

            var selectQuery = (SelectQuery)translatedQuery;

            Assert.Equal("(C c) => ((Nullable<Int32>)c.E == (Nullable<Int32>)1)", ExpressionFormatter.ToString(selectQuery.Where));
            Assert.Null(selectQuery.OrderBy);
            Assert.Null(selectQuery.Projection);
            Assert.Null(selectQuery.Skip);
            Assert.Null(selectQuery.Take);

            Assert.Equal("{ \"e\" : \"A\" }", selectQuery.BuildQuery().ToJson());
            Assert.Equal(1, Consume(query));
        }
Example #6
0
        public void TestTakeThenWhereThenSkip()
        {
            var query = _collection.AsQueryable <C>().Take(20).Where(c => c.X == 10).Skip(30);

            Assert.Throws(typeof(NotSupportedException), () => MongoQueryTranslator.Translate(query));
        }