@@ -75,14 +75,14 @@ public void TestOfTypeB()
75
75
Assert . AreSame ( typeof ( B ) , translatedQuery . DocumentType ) ;
76
76
77
77
var selectQuery = ( SelectQuery ) translatedQuery ;
78
- Assert . IsNull ( selectQuery . Where ) ;
79
- Assert . AreEqual ( null , selectQuery . OfType ) ; // OfType ignored because <T> was the same as <TDocument>
78
+ Assert . AreEqual ( "(B x) => LinqToMongo.Inject({ \" _t \" : \" B \" })" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
79
+ Assert . AreEqual ( typeof ( B ) , selectQuery . OfType ) ;
80
80
Assert . IsNull ( selectQuery . OrderBy ) ;
81
81
Assert . IsNull ( selectQuery . Projection ) ;
82
82
Assert . IsNull ( selectQuery . Skip ) ;
83
83
Assert . IsNull ( selectQuery . Take ) ;
84
84
85
- Assert . IsNull ( selectQuery . BuildQuery ( ) ) ;
85
+ Assert . AreEqual ( "{ \" _t \" : \" B \" }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
86
86
Assert . AreEqual ( 3 , Consume ( query ) ) ;
87
87
}
88
88
@@ -174,6 +174,81 @@ public void TestWhereBGreaterThan0OfTypeCWhereCGreaterThan0()
174
174
Assert . AreEqual ( 2 , Consume ( query ) ) ;
175
175
}
176
176
177
+ [ Test ]
178
+ public void TestWhereBIsB ( )
179
+ {
180
+ var query =
181
+ from b in _collection . AsQueryable < B > ( )
182
+ where b is B
183
+ select b ;
184
+
185
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
186
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
187
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
188
+ Assert . AreSame ( typeof ( B ) , translatedQuery . DocumentType ) ;
189
+
190
+ var selectQuery = ( SelectQuery ) translatedQuery ;
191
+ Assert . AreEqual ( "(B b) => (b is B)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
192
+ Assert . AreEqual ( null , selectQuery . OfType ) ; // OfType ignored because <T> was the same as <TDocument>
193
+ Assert . IsNull ( selectQuery . OrderBy ) ;
194
+ Assert . IsNull ( selectQuery . Projection ) ;
195
+ Assert . IsNull ( selectQuery . Skip ) ;
196
+ Assert . IsNull ( selectQuery . Take ) ;
197
+
198
+ Assert . AreEqual ( "{ \" _t\" : \" B\" }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
199
+ Assert . AreEqual ( 3 , Consume ( query ) ) ;
200
+ }
201
+
202
+ [ Test ]
203
+ public void TestWhereBIsC ( )
204
+ {
205
+ var query =
206
+ from b in _collection . AsQueryable < B > ( )
207
+ where b is C
208
+ select b ;
209
+
210
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
211
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
212
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
213
+ Assert . AreSame ( typeof ( B ) , translatedQuery . DocumentType ) ;
214
+
215
+ var selectQuery = ( SelectQuery ) translatedQuery ;
216
+ Assert . AreEqual ( "(B b) => (b is C)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
217
+ Assert . AreEqual ( null , selectQuery . OfType ) ;
218
+ Assert . IsNull ( selectQuery . OrderBy ) ;
219
+ Assert . IsNull ( selectQuery . Projection ) ;
220
+ Assert . IsNull ( selectQuery . Skip ) ;
221
+ Assert . IsNull ( selectQuery . Take ) ;
222
+
223
+ Assert . AreEqual ( "{ \" _t\" : \" C\" }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
224
+ Assert . AreEqual ( 2 , Consume ( query ) ) ;
225
+ }
226
+
227
+ [ Test ]
228
+ public void TestWhereBIsD ( )
229
+ {
230
+ var query =
231
+ from b in _collection . AsQueryable < B > ( )
232
+ where b is D
233
+ select b ;
234
+
235
+ var translatedQuery = MongoQueryTranslator . Translate ( query ) ;
236
+ Assert . IsInstanceOf < SelectQuery > ( translatedQuery ) ;
237
+ Assert . AreSame ( _collection , translatedQuery . Collection ) ;
238
+ Assert . AreSame ( typeof ( B ) , translatedQuery . DocumentType ) ;
239
+
240
+ var selectQuery = ( SelectQuery ) translatedQuery ;
241
+ Assert . AreEqual ( "(B b) => (b is D)" , ExpressionFormatter . ToString ( selectQuery . Where ) ) ;
242
+ Assert . AreEqual ( null , selectQuery . OfType ) ;
243
+ Assert . IsNull ( selectQuery . OrderBy ) ;
244
+ Assert . IsNull ( selectQuery . Projection ) ;
245
+ Assert . IsNull ( selectQuery . Skip ) ;
246
+ Assert . IsNull ( selectQuery . Take ) ;
247
+
248
+ Assert . AreEqual ( "{ \" _t\" : \" D\" }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
249
+ Assert . AreEqual ( 1 , Consume ( query ) ) ;
250
+ }
251
+
177
252
private int Consume < T > ( IQueryable < T > query )
178
253
{
179
254
var count = 0 ;
0 commit comments