@@ -9,7 +9,33 @@ namespace System.Linq.Dynamic.Core.Tests
9
9
public class ExpressionTests
10
10
{
11
11
[ Fact ]
12
- public void ExpressionTests_ParseConditionalOr1 ( )
12
+ public void ExpressionTests_NullCoalescing ( )
13
+ {
14
+ //Arrange
15
+ var testModels = User . GenerateSampleModels ( 3 , true ) ;
16
+ testModels [ 0 ] . NullableInt = null ;
17
+ testModels [ 1 ] . NullableInt = null ;
18
+ testModels [ 2 ] . NullableInt = 5 ;
19
+
20
+ var expectedResult1 = testModels . AsQueryable ( ) . Select ( u => new { UserName = u . UserName , X = u . NullableInt ?? ( 3 * u . Income ) } ) . Cast < object > ( ) . ToArray ( ) ;
21
+ var expectedResult2 = testModels . AsQueryable ( ) . Where ( u => ( u . NullableInt ?? 10 ) == 10 ) . ToArray ( ) ;
22
+ var expectedResult3 = testModels . Select ( m => m . NullableInt ?? 10 ) . ToArray ( ) ;
23
+
24
+ //Act
25
+ var result1 = testModels . AsQueryable ( ) . Select ( "new (UserName, NullableInt ?? (3 * Income) as X)" ) ;
26
+ var result2 = testModels . AsQueryable ( ) . Where ( "(NullableInt ?? 10) == 10" ) ;
27
+ var result3a = testModels . AsQueryable ( ) . Select ( "NullableInt ?? @0" , 10 ) ;
28
+ var result3b = testModels . AsQueryable ( ) . Select < int > ( "NullableInt ?? @0" , 10 ) ;
29
+
30
+ //Assert
31
+ Assert . Equal ( expectedResult1 . ToString ( ) , result1 . ToDynamicArray ( ) . ToString ( ) ) ;
32
+ Assert . Equal ( expectedResult2 , result2 . ToDynamicArray < User > ( ) ) ;
33
+ Assert . Equal ( expectedResult3 , result3a . ToDynamicArray < int > ( ) ) ;
34
+ Assert . Equal ( expectedResult3 , result3b . ToDynamicArray < int > ( ) ) ;
35
+ }
36
+
37
+ [ Fact ]
38
+ public void ExpressionTests_ConditionalOr1 ( )
13
39
{
14
40
//Arrange
15
41
int [ ] values = { 1 , 2 , 3 , 4 , 5 } ;
@@ -24,7 +50,7 @@ public void ExpressionTests_ParseConditionalOr1()
24
50
}
25
51
26
52
[ Fact ]
27
- public void ExpressionTests_ParseConditionalOr2 ( )
53
+ public void ExpressionTests_ConditionalOr2 ( )
28
54
{
29
55
//Arrange
30
56
int [ ] values = { 1 , 2 , 3 , 4 , 5 } ;
@@ -39,7 +65,7 @@ public void ExpressionTests_ParseConditionalOr2()
39
65
}
40
66
41
67
[ Fact ]
42
- public void ExpressionTests_ParseConditionalAnd1 ( )
68
+ public void ExpressionTests_ConditionalAnd1 ( )
43
69
{
44
70
//Arrange
45
71
var values = new [ ] { new { s = "s" , i = 1 } , new { s = "abc" , i = 2 } } ;
@@ -54,7 +80,7 @@ public void ExpressionTests_ParseConditionalAnd1()
54
80
}
55
81
56
82
[ Fact ]
57
- public void ExpressionTests_ParseConditionalAnd2 ( )
83
+ public void ExpressionTests_ConditionalAnd2 ( )
58
84
{
59
85
//Arrange
60
86
var values = new [ ] { new { s = "s" , i = 1 } , new { s = "abc" , i = 2 } } ;
0 commit comments