@@ -4351,6 +4351,144 @@ public void TestWhereSEndsWithAbcNot()
4351
4351
Assert . AreEqual ( 4 , Consume ( query ) ) ;
4352
4352
}
4353
4353
4354
+ [ Test ]
4355
+ public void TestWhereSIndexOfBEquals1 ( )
4356
+ {
4357
+ var query = from c in _collection . AsQueryable < C > ( )
4358
+ where c . S . IndexOf ( 'b' ) == 1
4359
+ select c ;
4360
+
4361
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
4362
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
4363
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
4364
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
4365
+
4366
+ var selectQuery = ( SelectQuery ) translatedQuery ;
4367
+ Assert . AreEqual ( "(C c) => (c.S.IndexOf('b') == 1)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
4368
+ Assert . IsNull ( selectQuery . OrderBy ) ;
4369
+ Assert . IsNull ( selectQuery . Projection ) ;
4370
+ Assert . IsNull ( selectQuery . Skip ) ;
4371
+ Assert . IsNull ( selectQuery . Take ) ;
4372
+
4373
+ Assert . AreEqual ( "{ \" s\" : /^[^b]{1}b/s }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
4374
+ Assert . AreEqual ( 1 , Consume ( query ) ) ;
4375
+ }
4376
+
4377
+ [ Test ]
4378
+ public void TestWhereSIndexOfBStartIndex1Equals1 ( )
4379
+ {
4380
+ var query = from c in _collection . AsQueryable < C > ( )
4381
+ where c . S . IndexOf ( 'b' , 1 ) == 1
4382
+ select c ;
4383
+
4384
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
4385
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
4386
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
4387
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
4388
+
4389
+ var selectQuery = ( SelectQuery ) translatedQuery ;
4390
+ Assert . AreEqual ( "(C c) => (c.S.IndexOf('b', 1) == 1)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
4391
+ Assert . IsNull ( selectQuery . OrderBy ) ;
4392
+ Assert . IsNull ( selectQuery . Projection ) ;
4393
+ Assert . IsNull ( selectQuery . Skip ) ;
4394
+ Assert . IsNull ( selectQuery . Take ) ;
4395
+
4396
+ Assert . AreEqual ( "{ \" s\" : /^.{1}[^b]{0}b/s }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
4397
+ Assert . AreEqual ( 1 , Consume ( query ) ) ;
4398
+ }
4399
+
4400
+ [ Test ]
4401
+ public void TestWhereSIndexOfBStartIndex1Count2Equals1 ( )
4402
+ {
4403
+ var query = from c in _collection . AsQueryable < C > ( )
4404
+ where c . S . IndexOf ( 'b' , 1 , 2 ) == 1
4405
+ select c ;
4406
+
4407
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
4408
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
4409
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
4410
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
4411
+
4412
+ var selectQuery = ( SelectQuery ) translatedQuery ;
4413
+ Assert . AreEqual ( "(C c) => (c.S.IndexOf('b', 1, 2) == 1)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
4414
+ Assert . IsNull ( selectQuery . OrderBy ) ;
4415
+ Assert . IsNull ( selectQuery . Projection ) ;
4416
+ Assert . IsNull ( selectQuery . Skip ) ;
4417
+ Assert . IsNull ( selectQuery . Take ) ;
4418
+
4419
+ Assert . AreEqual ( "{ \" s\" : /^.{1}(?=.{2})[^b]{0}b/s }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
4420
+ Assert . AreEqual ( 1 , Consume ( query ) ) ;
4421
+ }
4422
+
4423
+ [ Test ]
4424
+ public void TestWhereSIndexOfXyzEquals3 ( )
4425
+ {
4426
+ var query = from c in _collection . AsQueryable < C > ( )
4427
+ where c . S . IndexOf ( "xyz" ) == 3
4428
+ select c ;
4429
+
4430
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
4431
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
4432
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
4433
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
4434
+
4435
+ var selectQuery = ( SelectQuery ) translatedQuery ;
4436
+ Assert . AreEqual ( "(C c) => (c.S.IndexOf(\" xyz\" ) == 3)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
4437
+ Assert . IsNull ( selectQuery . OrderBy ) ;
4438
+ Assert . IsNull ( selectQuery . Projection ) ;
4439
+ Assert . IsNull ( selectQuery . Skip ) ;
4440
+ Assert . IsNull ( selectQuery . Take ) ;
4441
+
4442
+ Assert . AreEqual ( "{ \" s\" : /^(?!.{0,2}xyz).{3}xyz/s }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
4443
+ Assert . AreEqual ( 1 , Consume ( query ) ) ;
4444
+ }
4445
+
4446
+ [ Test ]
4447
+ public void TestWhereSIndexOfXyzStartIndex1Equals3 ( )
4448
+ {
4449
+ var query = from c in _collection . AsQueryable < C > ( )
4450
+ where c . S . IndexOf ( "xyz" , 1 ) == 3
4451
+ select c ;
4452
+
4453
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
4454
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
4455
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
4456
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
4457
+
4458
+ var selectQuery = ( SelectQuery ) translatedQuery ;
4459
+ Assert . AreEqual ( "(C c) => (c.S.IndexOf(\" xyz\" , 1) == 3)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
4460
+ Assert . IsNull ( selectQuery . OrderBy ) ;
4461
+ Assert . IsNull ( selectQuery . Projection ) ;
4462
+ Assert . IsNull ( selectQuery . Skip ) ;
4463
+ Assert . IsNull ( selectQuery . Take ) ;
4464
+
4465
+ Assert . AreEqual ( "{ \" s\" : /^.{1}(?!.{0,1}xyz).{2}xyz/s }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
4466
+ Assert . AreEqual ( 1 , Consume ( query ) ) ;
4467
+ }
4468
+
4469
+ [ Test ]
4470
+ public void TestWhereSIndexOfXyzStartIndex1Count5Equals3 ( )
4471
+ {
4472
+ var query = from c in _collection . AsQueryable < C > ( )
4473
+ where c . S . IndexOf ( "xyz" , 1 , 5 ) == 3
4474
+ select c ;
4475
+
4476
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
4477
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
4478
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
4479
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
4480
+
4481
+ var selectQuery = ( SelectQuery ) translatedQuery ;
4482
+ Assert . AreEqual ( "(C c) => (c.S.IndexOf(\" xyz\" , 1, 5) == 3)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
4483
+ Assert . IsNull ( selectQuery . OrderBy ) ;
4484
+ Assert . IsNull ( selectQuery . Projection ) ;
4485
+ Assert . IsNull ( selectQuery . Skip ) ;
4486
+ Assert . IsNull ( selectQuery . Take ) ;
4487
+
4488
+ Assert . AreEqual ( "{ \" s\" : /^.{1}(?=.{5})(?!.{0,1}xyz).{2}xyz/s }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
4489
+ Assert . AreEqual ( 1 , Consume ( query ) ) ;
4490
+ }
4491
+
4354
4492
[ Test ]
4355
4493
public void TestWhereSIsMatch ( )
4356
4494
{
0 commit comments