@@ -5266,6 +5266,279 @@ Namespace MongoDB.DriverUnitTests.Linq
5266
5266
Assert.AreEqual( 1 , Consume(query))
5267
5267
End Sub
5268
5268
5269
+ <Test()> _
5270
+ Public Sub TestWhereSToLowerEqualsConstantLowerCaseValue()
5271
+ Dim query = From c In _collection.AsQueryable( Of C)()
5272
+ Where c.S.ToLower() = "abc"
5273
+ Select c
5274
+
5275
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5276
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5277
+ Assert.AreSame(_collection, translatedQuery.Collection)
5278
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5279
+
5280
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5281
+ Assert.AreEqual( "(C c) => (c.S.ToLower() == ""abc"")" , ExpressionFormatter.ToString(selectQuery.Where))
5282
+
5283
+ Assert.IsNull(selectQuery.OrderBy)
5284
+ Assert.IsNull(selectQuery.Projection)
5285
+ Assert.IsNull(selectQuery.Skip)
5286
+ Assert.IsNull(selectQuery.Take)
5287
+
5288
+ Assert.AreEqual( "{ ""$and"" : [{ ""s"" : { ""$exists"" : true } }, { ""s"" : /^abc$/i }] }" , selectQuery.BuildQuery().ToJson())
5289
+ Assert.AreEqual( 1 , Consume(query))
5290
+ End Sub
5291
+
5292
+ <Test()> _
5293
+ Public Sub TestWhereSToLowerDoesNotEqualConstantLowerCaseValue()
5294
+ Dim query = From c In _collection.AsQueryable( Of C)()
5295
+ Where c.S.ToLower() <> "abc"
5296
+ Select c
5297
+
5298
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5299
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5300
+ Assert.AreSame(_collection, translatedQuery.Collection)
5301
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5302
+
5303
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5304
+ Assert.AreEqual( "(C c) => (c.S.ToLower() != ""abc"")" , ExpressionFormatter.ToString(selectQuery.Where))
5305
+
5306
+ Assert.IsNull(selectQuery.OrderBy)
5307
+ Assert.IsNull(selectQuery.Projection)
5308
+ Assert.IsNull(selectQuery.Skip)
5309
+ Assert.IsNull(selectQuery.Take)
5310
+
5311
+ Assert.AreEqual( "{ ""s"" : { ""$exists"" : true, ""$not"" : /^abc$/i } }" , selectQuery.BuildQuery().ToJson())
5312
+ Assert.AreEqual( 1 , Consume(query))
5313
+ End Sub
5314
+
5315
+ <Test()> _
5316
+ Public Sub TestWhereSToLowerEqualsConstantMixedCaseValue()
5317
+ Dim query = From c In _collection.AsQueryable( Of C)()
5318
+ Where c.S.ToLower() = "Abc"
5319
+ Select c
5320
+
5321
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5322
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5323
+ Assert.AreSame(_collection, translatedQuery.Collection)
5324
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5325
+
5326
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5327
+ Assert.AreEqual( "(C c) => (c.S.ToLower() == ""Abc"")" , ExpressionFormatter.ToString(selectQuery.Where))
5328
+
5329
+ Assert.IsNull(selectQuery.OrderBy)
5330
+ Assert.IsNull(selectQuery.Projection)
5331
+ Assert.IsNull(selectQuery.Skip)
5332
+ Assert.IsNull(selectQuery.Take)
5333
+
5334
+ Assert.AreEqual( "{ ""_id"" : { ""$exists"" : false } }" , selectQuery.BuildQuery().ToJson())
5335
+ Assert.AreEqual( 0 , Consume(query))
5336
+ End Sub
5337
+
5338
+ <Test()> _
5339
+ Public Sub TestWhereSToLowerDoesNotEqualConstantMixedCaseValue()
5340
+ Dim query = From c In _collection.AsQueryable( Of C)()
5341
+ Where c.S.ToLower() <> "Abc"
5342
+ Select c
5343
+
5344
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5345
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5346
+ Assert.AreSame(_collection, translatedQuery.Collection)
5347
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5348
+
5349
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5350
+ Assert.AreEqual( "(C c) => (c.S.ToLower() != ""Abc"")" , ExpressionFormatter.ToString(selectQuery.Where))
5351
+
5352
+ Assert.IsNull(selectQuery.OrderBy)
5353
+ Assert.IsNull(selectQuery.Projection)
5354
+ Assert.IsNull(selectQuery.Skip)
5355
+ Assert.IsNull(selectQuery.Take)
5356
+
5357
+ Assert.AreEqual( "{ ""s"" : { ""$exists"" : true } }" , selectQuery.BuildQuery().ToJson())
5358
+ Assert.AreEqual( 2 , Consume(query))
5359
+ End Sub
5360
+
5361
+ <Test()> _
5362
+ Public Sub TestWhereSToLowerEqualsNullValue()
5363
+ Dim query = From c In _collection.AsQueryable( Of C)()
5364
+ Where c.S.ToLower() = DirectCast ( Nothing , String )
5365
+ Select c
5366
+
5367
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5368
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5369
+ Assert.AreSame(_collection, translatedQuery.Collection)
5370
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5371
+
5372
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5373
+
5374
+ Assert.IsNull(selectQuery.OrderBy)
5375
+ Assert.IsNull(selectQuery.Projection)
5376
+ Assert.IsNull(selectQuery.Skip)
5377
+ Assert.IsNull(selectQuery.Take)
5378
+
5379
+ Assert.AreEqual( "{ ""_id"" : { ""$exists"" : false } }" , selectQuery.BuildQuery().ToJson())
5380
+ Assert.AreEqual( 0 , Consume(query))
5381
+ End Sub
5382
+
5383
+ <Test()> _
5384
+ Public Sub TestWhereSToLowerDoesNotEqualNullValue()
5385
+ Dim query = From c In _collection.AsQueryable( Of C)()
5386
+ Where c.S.ToLower() <> DirectCast ( Nothing , String )
5387
+ Select c
5388
+
5389
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5390
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5391
+ Assert.AreSame(_collection, translatedQuery.Collection)
5392
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5393
+
5394
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5395
+
5396
+ Assert.IsNull(selectQuery.OrderBy)
5397
+ Assert.IsNull(selectQuery.Projection)
5398
+ Assert.IsNull(selectQuery.Skip)
5399
+ Assert.IsNull(selectQuery.Take)
5400
+
5401
+ Assert.AreEqual( "{ ""s"" : { ""$exists"" : true } }" , selectQuery.BuildQuery().ToJson())
5402
+ Assert.AreEqual( 2 , Consume(query))
5403
+ End Sub
5404
+
5405
+ <Test()> _
5406
+ Public Sub TestWhereSToUpperEqualsConstantLowerCaseValue()
5407
+ Dim query = From c In _collection.AsQueryable( Of C)()
5408
+ Where c.S.ToUpper() = "abc"
5409
+ Select c
5410
+
5411
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5412
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5413
+ Assert.AreSame(_collection, translatedQuery.Collection)
5414
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5415
+
5416
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5417
+ Assert.AreEqual( "(C c) => (c.S.ToUpper() == ""abc"")" , ExpressionFormatter.ToString(selectQuery.Where))
5418
+
5419
+ Assert.IsNull(selectQuery.OrderBy)
5420
+ Assert.IsNull(selectQuery.Projection)
5421
+ Assert.IsNull(selectQuery.Skip)
5422
+ Assert.IsNull(selectQuery.Take)
5423
+
5424
+ Assert.AreEqual( "{ ""_id"" : { ""$exists"" : false } }" , selectQuery.BuildQuery().ToJson())
5425
+ Assert.AreEqual( 0 , Consume(query))
5426
+ End Sub
5427
+
5428
+ <Test()> _
5429
+ Public Sub TestWhereSToUpperDoesNotEqualConstantLowerCaseValue()
5430
+ Dim query = From c In _collection.AsQueryable( Of C)()
5431
+ Where c.S.ToUpper() <> "abc"
5432
+ Select c
5433
+
5434
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5435
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5436
+ Assert.AreSame(_collection, translatedQuery.Collection)
5437
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5438
+
5439
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5440
+ Assert.AreEqual( "(C c) => (c.S.ToUpper() != ""abc"")" , ExpressionFormatter.ToString(selectQuery.Where))
5441
+
5442
+ Assert.IsNull(selectQuery.OrderBy)
5443
+ Assert.IsNull(selectQuery.Projection)
5444
+ Assert.IsNull(selectQuery.Skip)
5445
+ Assert.IsNull(selectQuery.Take)
5446
+
5447
+ Assert.AreEqual( "{ ""s"" : { ""$exists"" : true } }" , selectQuery.BuildQuery().ToJson())
5448
+ Assert.AreEqual( 2 , Consume(query))
5449
+ End Sub
5450
+
5451
+ <Test()> _
5452
+ Public Sub TestWhereSToUpperEqualsConstantMixedCaseValue()
5453
+ Dim query = From c In _collection.AsQueryable( Of C)()
5454
+ Where c.S.ToUpper() = "Abc"
5455
+ Select c
5456
+
5457
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5458
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5459
+ Assert.AreSame(_collection, translatedQuery.Collection)
5460
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5461
+
5462
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5463
+ Assert.AreEqual( "(C c) => (c.S.ToUpper() == ""Abc"")" , ExpressionFormatter.ToString(selectQuery.Where))
5464
+
5465
+ Assert.IsNull(selectQuery.OrderBy)
5466
+ Assert.IsNull(selectQuery.Projection)
5467
+ Assert.IsNull(selectQuery.Skip)
5468
+ Assert.IsNull(selectQuery.Take)
5469
+
5470
+ Assert.AreEqual( "{ ""_id"" : { ""$exists"" : false } }" , selectQuery.BuildQuery().ToJson())
5471
+ Assert.AreEqual( 0 , Consume(query))
5472
+ End Sub
5473
+
5474
+ <Test()> _
5475
+ Public Sub TestWhereSToUpperDoesNotEqualConstantMixedCaseValue()
5476
+ Dim query = From c In _collection.AsQueryable( Of C)()
5477
+ Where c.S.ToUpper() <> "Abc"
5478
+ Select c
5479
+
5480
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5481
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5482
+ Assert.AreSame(_collection, translatedQuery.Collection)
5483
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5484
+
5485
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5486
+ Assert.AreEqual( "(C c) => (c.S.ToUpper() != ""Abc"")" , ExpressionFormatter.ToString(selectQuery.Where))
5487
+
5488
+ Assert.IsNull(selectQuery.OrderBy)
5489
+ Assert.IsNull(selectQuery.Projection)
5490
+ Assert.IsNull(selectQuery.Skip)
5491
+ Assert.IsNull(selectQuery.Take)
5492
+
5493
+ Assert.AreEqual( "{ ""s"" : { ""$exists"" : true } }" , selectQuery.BuildQuery().ToJson())
5494
+ Assert.AreEqual( 2 , Consume(query))
5495
+ End Sub
5496
+
5497
+ <Test()> _
5498
+ Public Sub TestWhereSToUpperEqualsNullValue()
5499
+ Dim query = From c In _collection.AsQueryable( Of C)()
5500
+ Where c.S.ToUpper() = DirectCast ( Nothing , String )
5501
+ Select c
5502
+
5503
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5504
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5505
+ Assert.AreSame(_collection, translatedQuery.Collection)
5506
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5507
+
5508
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5509
+
5510
+ Assert.IsNull(selectQuery.OrderBy)
5511
+ Assert.IsNull(selectQuery.Projection)
5512
+ Assert.IsNull(selectQuery.Skip)
5513
+ Assert.IsNull(selectQuery.Take)
5514
+
5515
+ Assert.AreEqual( "{ ""_id"" : { ""$exists"" : false } }" , selectQuery.BuildQuery().ToJson())
5516
+ Assert.AreEqual( 0 , Consume(query))
5517
+ End Sub
5518
+
5519
+ <Test()> _
5520
+ Public Sub TestWhereSToUpperDoesNotEqualNullValue()
5521
+ Dim query = From c In _collection.AsQueryable( Of C)()
5522
+ Where c.S.ToUpper() <> DirectCast ( Nothing , String )
5523
+ Select c
5524
+
5525
+ Dim translatedQuery = MongoQueryTranslator.Translate(query)
5526
+ Assert.IsInstanceOf( Of SelectQuery)(translatedQuery)
5527
+ Assert.AreSame(_collection, translatedQuery.Collection)
5528
+ Assert.AreSame( GetType (C), translatedQuery.DocumentType)
5529
+
5530
+ Dim selectQuery = DirectCast (translatedQuery, SelectQuery)
5531
+
5532
+ Assert.IsNull(selectQuery.OrderBy)
5533
+ Assert.IsNull(selectQuery.Projection)
5534
+ Assert.IsNull(selectQuery.Skip)
5535
+ Assert.IsNull(selectQuery.Take)
5536
+
5537
+ Assert.AreEqual( "{ ""s"" : { ""$exists"" : true } }" , selectQuery.BuildQuery().ToJson())
5538
+ Assert.AreEqual( 2 , Consume(query))
5539
+ End Sub
5540
+
5541
+
5269
5542
<Test()> _
5270
5543
Public Sub TestWhereSystemProfileInfoDurationGreatherThan10Seconds()
5271
5544
Dim query = From pi In _systemProfileCollection.AsQueryable( Of SystemProfileInfo)()
0 commit comments