Skip to content

Commit 8a5086d

Browse files
author
rstam
committed
There are 5 unit tests that are failing when run against servers older than 2.0 due to server changes that have not been backported to 1.8.5. These 5 unit tests are now skipped when the server is older than 2.0.
1 parent 98d73c9 commit 8a5086d

File tree

2 files changed

+108
-93
lines changed

2 files changed

+108
-93
lines changed

DriverUnitTests/Linq/SelectOfTypeHierarchicalTests.cs

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -252,26 +252,29 @@ where b is D
252252
[Test]
253253
public void TestWhereBTypeEqualsB()
254254
{
255-
var query =
256-
from b in _collection.AsQueryable<B>()
257-
where b.GetType() == typeof(B)
258-
select b;
259-
260-
var translatedQuery = MongoQueryTranslator.Translate(query);
261-
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
262-
Assert.AreSame(_collection, translatedQuery.Collection);
263-
Assert.AreSame(typeof(B), translatedQuery.DocumentType);
264-
265-
var selectQuery = (SelectQuery)translatedQuery;
266-
Assert.AreEqual("(B b) => (b.GetType() == typeof(B))", ExpressionFormatter.ToString(selectQuery.Where));
267-
Assert.AreEqual(null, selectQuery.OfType); // OfType ignored because <T> was the same as <TDocument>
268-
Assert.IsNull(selectQuery.OrderBy);
269-
Assert.IsNull(selectQuery.Projection);
270-
Assert.IsNull(selectQuery.Skip);
271-
Assert.IsNull(selectQuery.Take);
272-
273-
Assert.AreEqual("{ \"_t.0\" : { \"$exists\" : false }, \"_t\" : \"B\" }", selectQuery.BuildQuery().ToJson());
274-
Assert.AreEqual(1, Consume(query));
255+
if (_server.BuildInfo.Version >= new Version(2, 0))
256+
{
257+
var query =
258+
from b in _collection.AsQueryable<B>()
259+
where b.GetType() == typeof(B)
260+
select b;
261+
262+
var translatedQuery = MongoQueryTranslator.Translate(query);
263+
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
264+
Assert.AreSame(_collection, translatedQuery.Collection);
265+
Assert.AreSame(typeof(B), translatedQuery.DocumentType);
266+
267+
var selectQuery = (SelectQuery)translatedQuery;
268+
Assert.AreEqual("(B b) => (b.GetType() == typeof(B))", ExpressionFormatter.ToString(selectQuery.Where));
269+
Assert.AreEqual(null, selectQuery.OfType); // OfType ignored because <T> was the same as <TDocument>
270+
Assert.IsNull(selectQuery.OrderBy);
271+
Assert.IsNull(selectQuery.Projection);
272+
Assert.IsNull(selectQuery.Skip);
273+
Assert.IsNull(selectQuery.Take);
274+
275+
Assert.AreEqual("{ \"_t.0\" : { \"$exists\" : false }, \"_t\" : \"B\" }", selectQuery.BuildQuery().ToJson());
276+
Assert.AreEqual(1, Consume(query));
277+
}
275278
}
276279

277280
[Test]

DriverUnitTests/Linq/SelectQueryTests.cs

Lines changed: 85 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -5567,25 +5567,28 @@ public void TestWhereSystemProfileInfoTimeStampGreatherThanJan12012()
55675567
[Test]
55685568
public void TestWhereTripleAnd()
55695569
{
5570-
// the query is a bit odd in order to force the built query to be promoted to $and form
5571-
var query = from c in _collection.AsQueryable<C>()
5572-
where c.X >= 0 && c.X >= 1 && c.Y == 11
5573-
select c;
5574-
5575-
var translatedQuery = MongoQueryTranslator.Translate(query);
5576-
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
5577-
Assert.AreSame(_collection, translatedQuery.Collection);
5578-
Assert.AreSame(typeof(C), translatedQuery.DocumentType);
5579-
5580-
var selectQuery = (SelectQuery)translatedQuery;
5581-
Assert.AreEqual("(C c) => (((c.X >= 0) && (c.X >= 1)) && (c.Y == 11))", ExpressionFormatter.ToString(selectQuery.Where));
5582-
Assert.IsNull(selectQuery.OrderBy);
5583-
Assert.IsNull(selectQuery.Projection);
5584-
Assert.IsNull(selectQuery.Skip);
5585-
Assert.IsNull(selectQuery.Take);
5586-
5587-
Assert.AreEqual("{ \"$and\" : [{ \"x\" : { \"$gte\" : 0 } }, { \"x\" : { \"$gte\" : 1 } }, { \"y\" : 11 }] }", selectQuery.BuildQuery().ToJson());
5588-
Assert.AreEqual(2, Consume(query));
5570+
if (_server.BuildInfo.Version >= new Version(2, 0))
5571+
{
5572+
// the query is a bit odd in order to force the built query to be promoted to $and form
5573+
var query = from c in _collection.AsQueryable<C>()
5574+
where c.X >= 0 && c.X >= 1 && c.Y == 11
5575+
select c;
5576+
5577+
var translatedQuery = MongoQueryTranslator.Translate(query);
5578+
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
5579+
Assert.AreSame(_collection, translatedQuery.Collection);
5580+
Assert.AreSame(typeof(C), translatedQuery.DocumentType);
5581+
5582+
var selectQuery = (SelectQuery)translatedQuery;
5583+
Assert.AreEqual("(C c) => (((c.X >= 0) && (c.X >= 1)) && (c.Y == 11))", ExpressionFormatter.ToString(selectQuery.Where));
5584+
Assert.IsNull(selectQuery.OrderBy);
5585+
Assert.IsNull(selectQuery.Projection);
5586+
Assert.IsNull(selectQuery.Skip);
5587+
Assert.IsNull(selectQuery.Take);
5588+
5589+
Assert.AreEqual("{ \"$and\" : [{ \"x\" : { \"$gte\" : 0 } }, { \"x\" : { \"$gte\" : 1 } }, { \"y\" : 11 }] }", selectQuery.BuildQuery().ToJson());
5590+
Assert.AreEqual(2, Consume(query));
5591+
}
55895592
}
55905593

55915594
[Test]
@@ -6265,70 +6268,79 @@ public void TestWhereXLessThanOrEquals1Reversed()
62656268
[Test]
62666269
public void TestWhereXModOneEquals0AndXModTwoEquals0()
62676270
{
6268-
var query = from c in _collection.AsQueryable<C>()
6269-
where (c.X % 1 == 0) && (c.X % 2 == 0)
6270-
select c;
6271-
6272-
var translatedQuery = MongoQueryTranslator.Translate(query);
6273-
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
6274-
Assert.AreSame(_collection, translatedQuery.Collection);
6275-
Assert.AreSame(typeof(C), translatedQuery.DocumentType);
6276-
6277-
var selectQuery = (SelectQuery)translatedQuery;
6278-
Assert.AreEqual("(C c) => (((c.X % 1) == 0) && ((c.X % 2) == 0))", ExpressionFormatter.ToString(selectQuery.Where));
6279-
Assert.IsNull(selectQuery.OrderBy);
6280-
Assert.IsNull(selectQuery.Projection);
6281-
Assert.IsNull(selectQuery.Skip);
6282-
Assert.IsNull(selectQuery.Take);
6283-
6284-
Assert.AreEqual("{ \"$and\" : [{ \"x\" : { \"$mod\" : [1, 0] } }, { \"x\" : { \"$mod\" : [2, 0] } }] }", selectQuery.BuildQuery().ToJson());
6285-
Assert.AreEqual(2, Consume(query));
6271+
if (_server.BuildInfo.Version >= new Version(2, 0))
6272+
{
6273+
var query = from c in _collection.AsQueryable<C>()
6274+
where (c.X % 1 == 0) && (c.X % 2 == 0)
6275+
select c;
6276+
6277+
var translatedQuery = MongoQueryTranslator.Translate(query);
6278+
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
6279+
Assert.AreSame(_collection, translatedQuery.Collection);
6280+
Assert.AreSame(typeof(C), translatedQuery.DocumentType);
6281+
6282+
var selectQuery = (SelectQuery)translatedQuery;
6283+
Assert.AreEqual("(C c) => (((c.X % 1) == 0) && ((c.X % 2) == 0))", ExpressionFormatter.ToString(selectQuery.Where));
6284+
Assert.IsNull(selectQuery.OrderBy);
6285+
Assert.IsNull(selectQuery.Projection);
6286+
Assert.IsNull(selectQuery.Skip);
6287+
Assert.IsNull(selectQuery.Take);
6288+
6289+
Assert.AreEqual("{ \"$and\" : [{ \"x\" : { \"$mod\" : [1, 0] } }, { \"x\" : { \"$mod\" : [2, 0] } }] }", selectQuery.BuildQuery().ToJson());
6290+
Assert.AreEqual(2, Consume(query));
6291+
}
62866292
}
62876293

62886294
[Test]
62896295
public void TestWhereXModOneEquals0AndXModTwoEquals0Not()
62906296
{
6291-
var query = from c in _collection.AsQueryable<C>()
6292-
where !((c.X % 1 == 0) && (c.X % 2 == 0))
6293-
select c;
6294-
6295-
var translatedQuery = MongoQueryTranslator.Translate(query);
6296-
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
6297-
Assert.AreSame(_collection, translatedQuery.Collection);
6298-
Assert.AreSame(typeof(C), translatedQuery.DocumentType);
6299-
6300-
var selectQuery = (SelectQuery)translatedQuery;
6301-
Assert.AreEqual("(C c) => !(((c.X % 1) == 0) && ((c.X % 2) == 0))", ExpressionFormatter.ToString(selectQuery.Where));
6302-
Assert.IsNull(selectQuery.OrderBy);
6303-
Assert.IsNull(selectQuery.Projection);
6304-
Assert.IsNull(selectQuery.Skip);
6305-
Assert.IsNull(selectQuery.Take);
6306-
6307-
Assert.AreEqual("{ \"$nor\" : [{ \"$and\" : [{ \"x\" : { \"$mod\" : [1, 0] } }, { \"x\" : { \"$mod\" : [2, 0] } }] }] }", selectQuery.BuildQuery().ToJson());
6308-
Assert.AreEqual(3, Consume(query));
6297+
if (_server.BuildInfo.Version >= new Version(2, 0))
6298+
{
6299+
var query = from c in _collection.AsQueryable<C>()
6300+
where !((c.X % 1 == 0) && (c.X % 2 == 0))
6301+
select c;
6302+
6303+
var translatedQuery = MongoQueryTranslator.Translate(query);
6304+
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
6305+
Assert.AreSame(_collection, translatedQuery.Collection);
6306+
Assert.AreSame(typeof(C), translatedQuery.DocumentType);
6307+
6308+
var selectQuery = (SelectQuery)translatedQuery;
6309+
Assert.AreEqual("(C c) => !(((c.X % 1) == 0) && ((c.X % 2) == 0))", ExpressionFormatter.ToString(selectQuery.Where));
6310+
Assert.IsNull(selectQuery.OrderBy);
6311+
Assert.IsNull(selectQuery.Projection);
6312+
Assert.IsNull(selectQuery.Skip);
6313+
Assert.IsNull(selectQuery.Take);
6314+
6315+
Assert.AreEqual("{ \"$nor\" : [{ \"$and\" : [{ \"x\" : { \"$mod\" : [1, 0] } }, { \"x\" : { \"$mod\" : [2, 0] } }] }] }", selectQuery.BuildQuery().ToJson());
6316+
Assert.AreEqual(3, Consume(query));
6317+
}
63096318
}
63106319

63116320
[Test]
63126321
public void TestWhereXModOneEquals0AndXModTwoEquals0NotNot()
63136322
{
6314-
var query = from c in _collection.AsQueryable<C>()
6315-
where !!((c.X % 1 == 0) && (c.X % 2 == 0))
6316-
select c;
6317-
6318-
var translatedQuery = MongoQueryTranslator.Translate(query);
6319-
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
6320-
Assert.AreSame(_collection, translatedQuery.Collection);
6321-
Assert.AreSame(typeof(C), translatedQuery.DocumentType);
6322-
6323-
var selectQuery = (SelectQuery)translatedQuery;
6324-
Assert.AreEqual("(C c) => !!(((c.X % 1) == 0) && ((c.X % 2) == 0))", ExpressionFormatter.ToString(selectQuery.Where));
6325-
Assert.IsNull(selectQuery.OrderBy);
6326-
Assert.IsNull(selectQuery.Projection);
6327-
Assert.IsNull(selectQuery.Skip);
6328-
Assert.IsNull(selectQuery.Take);
6329-
6330-
Assert.AreEqual("{ \"$or\" : [{ \"$and\" : [{ \"x\" : { \"$mod\" : [1, 0] } }, { \"x\" : { \"$mod\" : [2, 0] } }] }] }", selectQuery.BuildQuery().ToJson());
6331-
Assert.AreEqual(2, Consume(query));
6323+
if (_server.BuildInfo.Version >= new Version(2, 0))
6324+
{
6325+
var query = from c in _collection.AsQueryable<C>()
6326+
where !!((c.X % 1 == 0) && (c.X % 2 == 0))
6327+
select c;
6328+
6329+
var translatedQuery = MongoQueryTranslator.Translate(query);
6330+
Assert.IsInstanceOf<SelectQuery>(translatedQuery);
6331+
Assert.AreSame(_collection, translatedQuery.Collection);
6332+
Assert.AreSame(typeof(C), translatedQuery.DocumentType);
6333+
6334+
var selectQuery = (SelectQuery)translatedQuery;
6335+
Assert.AreEqual("(C c) => !!(((c.X % 1) == 0) && ((c.X % 2) == 0))", ExpressionFormatter.ToString(selectQuery.Where));
6336+
Assert.IsNull(selectQuery.OrderBy);
6337+
Assert.IsNull(selectQuery.Projection);
6338+
Assert.IsNull(selectQuery.Skip);
6339+
Assert.IsNull(selectQuery.Take);
6340+
6341+
Assert.AreEqual("{ \"$or\" : [{ \"$and\" : [{ \"x\" : { \"$mod\" : [1, 0] } }, { \"x\" : { \"$mod\" : [2, 0] } }] }] }", selectQuery.BuildQuery().ToJson());
6342+
Assert.AreEqual(2, Consume(query));
6343+
}
63326344
}
63336345

63346346
[Test]

0 commit comments

Comments
 (0)