@@ -5232,6 +5232,98 @@ public void TestWhereSStartsWithAbcNot()
5232
5232
Assert . AreEqual ( 4 , Consume ( query ) ) ;
5233
5233
}
5234
5234
5235
+ [ Test ]
5236
+ public void TestWhereSSub1EqualsB ( )
5237
+ {
5238
+ var query = from c in _collection . AsQueryable < C > ( )
5239
+ where c . S [ 1 ] == 'b'
5240
+ select c ;
5241
+
5242
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
5243
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
5244
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
5245
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
5246
+
5247
+ var selectQuery = ( SelectQuery ) translatedQuery ;
5248
+ Assert . AreEqual ( "(C c) => ((Int32)c.S.get_Chars(1) == 98)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
5249
+ Assert . IsNull ( selectQuery . OrderBy ) ;
5250
+ Assert . IsNull ( selectQuery . Projection ) ;
5251
+ Assert . IsNull ( selectQuery . Skip ) ;
5252
+ Assert . IsNull ( selectQuery . Take ) ;
5253
+
5254
+ Assert . AreEqual ( "{ \" s\" : /^.{1}b/s }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
5255
+ Assert . AreEqual ( 1 , Consume ( query ) ) ;
5256
+ }
5257
+
5258
+ [ Test ]
5259
+ public void TestWhereSSub1EqualsBNot ( )
5260
+ {
5261
+ var query = from c in _collection . AsQueryable < C > ( )
5262
+ where ! ( c . S [ 1 ] == 'b' )
5263
+ select c ;
5264
+
5265
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
5266
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
5267
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
5268
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
5269
+
5270
+ var selectQuery = ( SelectQuery ) translatedQuery ;
5271
+ Assert . AreEqual ( "(C c) => !((Int32)c.S.get_Chars(1) == 98)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
5272
+ Assert . IsNull ( selectQuery . OrderBy ) ;
5273
+ Assert . IsNull ( selectQuery . Projection ) ;
5274
+ Assert . IsNull ( selectQuery . Skip ) ;
5275
+ Assert . IsNull ( selectQuery . Take ) ;
5276
+
5277
+ Assert . AreEqual ( "{ \" s\" : { \" $not\" : /^.{1}b/s } }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
5278
+ Assert . AreEqual ( 4 , Consume ( query ) ) ;
5279
+ }
5280
+
5281
+ [ Test ]
5282
+ public void TestWhereSSub1NotEqualsB ( )
5283
+ {
5284
+ var query = from c in _collection . AsQueryable < C > ( )
5285
+ where c . S [ 1 ] != 'b'
5286
+ select c ;
5287
+
5288
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
5289
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
5290
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
5291
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
5292
+
5293
+ var selectQuery = ( SelectQuery ) translatedQuery ;
5294
+ Assert . AreEqual ( "(C c) => ((Int32)c.S.get_Chars(1) != 98)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
5295
+ Assert . IsNull ( selectQuery . OrderBy ) ;
5296
+ Assert . IsNull ( selectQuery . Projection ) ;
5297
+ Assert . IsNull ( selectQuery . Skip ) ;
5298
+ Assert . IsNull ( selectQuery . Take ) ;
5299
+
5300
+ Assert . AreEqual ( "{ \" s\" : /^.{1}[^b]/s }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
5301
+ Assert . AreEqual ( 1 , Consume ( query ) ) ;
5302
+ }
5303
+
5304
+ [ Test ]
5305
+ public void TestWhereSSub1NotEqualsBNot ( )
5306
+ {
5307
+ var query = from c in _collection . AsQueryable < C > ( )
5308
+ where ! ( c . S [ 1 ] != 'b' )
5309
+ select c ;
5310
+
5311
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
5312
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
5313
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
5314
+ Assert . AreSame ( typeof ( C ) , translatedQuery . DocumentType ) ;
5315
+
5316
+ var selectQuery = ( SelectQuery ) translatedQuery ;
5317
+ Assert . AreEqual ( "(C c) => !((Int32)c.S.get_Chars(1) != 98)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
5318
+ Assert . IsNull ( selectQuery . OrderBy ) ;
5319
+ Assert . IsNull ( selectQuery . Projection ) ;
5320
+ Assert . IsNull ( selectQuery . Skip ) ;
5321
+ Assert . IsNull ( selectQuery . Take ) ;
5322
+
5323
+ Assert . AreEqual ( "{ \" s\" : { \" $not\" : /^.{1}[^b]/s } }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
5324
+ Assert . AreEqual ( 4 , Consume ( query ) ) ;
5325
+ }
5326
+
5235
5327
[ Test ]
5236
5328
public void TestWhereSTrimContainsXyz ( )
5237
5329
{
0 commit comments