1
1
using System . Collections . Generic ;
2
2
using System . Dynamic ;
3
3
using System . Globalization ;
4
+ using System . Linq . Dynamic . Core . CustomTypeProviders ;
4
5
using System . Linq . Dynamic . Core . Exceptions ;
5
6
using System . Linq . Dynamic . Core . Tests . Helpers ;
6
7
using System . Linq . Dynamic . Core . Tests . Helpers . Models ;
7
8
using FluentAssertions ;
9
+ using Moq ;
8
10
using Newtonsoft . Json . Linq ;
9
11
using NFluent ;
10
12
using Xunit ;
@@ -251,7 +253,7 @@ public void ExpressionTests_BinaryOrNumericConvert()
251
253
}
252
254
253
255
[ Fact ]
254
- public void ExpressionTests_Cast_To_nullableint ( )
256
+ public void ExpressionTests_Cast_To_NullableInt ( )
255
257
{
256
258
// Arrange
257
259
var list = new List < SimpleValuesModel >
@@ -268,7 +270,94 @@ public void ExpressionTests_Cast_To_nullableint()
268
270
}
269
271
270
272
[ Fact ]
271
- public void ExpressionTests_Cast_Automatic_To_nullablelong ( )
273
+ public void ExpressionTests_Cast_To_Enum_Using_DynamicLinqType ( )
274
+ {
275
+ // Arrange
276
+ var list = new List < SimpleValuesModel >
277
+ {
278
+ new SimpleValuesModel { EnumValueDynamicLinqType = SimpleValuesModelEnumAsDynamicLinqType . A }
279
+ } ;
280
+
281
+ // Act
282
+ var expectedResult = list . Select ( x => x . EnumValueDynamicLinqType ) ;
283
+ var result = list . AsQueryable ( ) . Select ( "SimpleValuesModelEnumAsDynamicLinqType(EnumValueDynamicLinqType)" ) ;
284
+
285
+ // Assert
286
+ Assert . Equal ( expectedResult . ToArray ( ) , result . ToDynamicArray < SimpleValuesModelEnumAsDynamicLinqType > ( ) ) ;
287
+ }
288
+
289
+ [ Fact ]
290
+ public void ExpressionTests_Cast_To_Enum_Using_CustomTypeProvider ( )
291
+ {
292
+ // Arrange
293
+ var dynamicLinqCustomTypeProviderMock = new Mock < IDynamicLinkCustomTypeProvider > ( ) ;
294
+ dynamicLinqCustomTypeProviderMock . Setup ( d => d . GetCustomTypes ( ) ) . Returns ( new HashSet < Type > { typeof ( SimpleValuesModelEnum ) } ) ;
295
+ var config = new ParsingConfig
296
+ {
297
+ CustomTypeProvider = dynamicLinqCustomTypeProviderMock . Object
298
+ } ;
299
+
300
+ var list = new List < SimpleValuesModel >
301
+ {
302
+ new SimpleValuesModel { EnumValue = SimpleValuesModelEnum . A }
303
+ } ;
304
+
305
+ // Act
306
+ var expectedResult = list . Select ( x => x . EnumValue ) ;
307
+ var result = list . AsQueryable ( ) . Select ( config , "SimpleValuesModelEnum(EnumValue)" ) ;
308
+
309
+ // Assert
310
+ Assert . Equal ( expectedResult . ToArray ( ) , result . ToDynamicArray < SimpleValuesModelEnum > ( ) ) ;
311
+ }
312
+
313
+ [ Fact ]
314
+ public void ExpressionTests_Cast_To_NullableEnum_Using_DynamicLinqType ( )
315
+ {
316
+ // Arrange
317
+ var list = new List < SimpleValuesModel >
318
+ {
319
+ new SimpleValuesModel { EnumValueDynamicLinqType = SimpleValuesModelEnumAsDynamicLinqType . A }
320
+ } ;
321
+
322
+ // Act
323
+ var expectedResult = list . Select ( x => ( SimpleValuesModelEnumAsDynamicLinqType ? ) x . EnumValueDynamicLinqType ) ;
324
+ var result = list . AsQueryable ( ) . Select ( "SimpleValuesModelEnumAsDynamicLinqType?(EnumValueDynamicLinqType)" ) ;
325
+
326
+ // Assert
327
+ Assert . Equal ( expectedResult . ToArray ( ) , result . ToDynamicArray < SimpleValuesModelEnumAsDynamicLinqType ? > ( ) ) ;
328
+ }
329
+
330
+ [ Fact ]
331
+ public void ExpressionTests_Cast_To_NullableEnum_Using_CustomTypeProvider ( )
332
+ {
333
+ // Arrange
334
+ var dynamicLinqCustomTypeProviderMock = new Mock < IDynamicLinkCustomTypeProvider > ( ) ;
335
+ dynamicLinqCustomTypeProviderMock . Setup ( d => d . GetCustomTypes ( ) ) . Returns ( new HashSet < Type >
336
+ {
337
+ typeof ( SimpleValuesModelEnum ) ,
338
+ typeof ( SimpleValuesModelEnum ? )
339
+ } ) ;
340
+
341
+ var config = new ParsingConfig
342
+ {
343
+ CustomTypeProvider = dynamicLinqCustomTypeProviderMock . Object
344
+ } ;
345
+
346
+ var list = new List < SimpleValuesModel >
347
+ {
348
+ new SimpleValuesModel { EnumValue = SimpleValuesModelEnum . A }
349
+ } ;
350
+
351
+ // Act
352
+ var expectedResult = list . Select ( x => ( SimpleValuesModelEnum ? ) x . EnumValue ) ;
353
+ var result = list . AsQueryable ( ) . Select ( config , $ "SimpleValuesModelEnum?(EnumValue)") ;
354
+
355
+ // Assert
356
+ Assert . Equal ( expectedResult . ToArray ( ) , result . ToDynamicArray < SimpleValuesModelEnum ? > ( ) ) ;
357
+ }
358
+
359
+ [ Fact ]
360
+ public void ExpressionTests_Cast_Automatic_To_NullableLong ( )
272
361
{
273
362
// Arrange
274
363
var q = new [ ] { null , new UserProfile ( ) , new UserProfile { UserProfileDetails = new UserProfileDetails { Id = 42 } } } . AsQueryable ( ) ;
@@ -282,7 +371,7 @@ public void ExpressionTests_Cast_Automatic_To_nullablelong()
282
371
}
283
372
284
373
[ Fact ]
285
- public void ExpressionTests_Cast_To_newnullableint ( )
374
+ public void ExpressionTests_Cast_To_NewNullableInt ( )
286
375
{
287
376
// Arrange
288
377
var list = new List < SimpleValuesModel >
0 commit comments