2
2
using System . Collections . Generic ;
3
3
using System . Linq ;
4
4
using System . Reflection ;
5
- using System . Text ;
6
- using System . Threading . Tasks ;
7
5
using Xunit ;
8
6
9
7
namespace LogicBuilder . Expressions . Utils . Tests
@@ -27,29 +25,77 @@ public void MemberInfoReflectedTypeMustMatchTheDeclaringType(string propertyName
27
25
[ InlineData ( nameof ( DerivedThing . Id ) , typeof ( DerivedThing ) ) ]
28
26
[ InlineData ( nameof ( DerivedThing . Name ) , typeof ( BaseThing ) ) ]
29
27
[ InlineData ( nameof ( DerivedThing . Description ) , typeof ( DerivedThing ) ) ]
30
- public void MemberInfoReflectedTypeMustMatchTheDeclaringTypeForGetSelectedMembers ( string propertyName , Type reflectedType )
28
+ public void MemberInfoReflectedTypeMustMatchTheDeclaringTypeForGetSelectedMembers ( string propertyName ,
29
+ Type reflectedType )
31
30
{
32
31
//act
33
- MemberInfo memberInfo = typeof ( DerivedThing ) . GetSelectedMembers ( new List < string > ( ) ) . FirstOrDefault ( m => m . Name == propertyName ) ;
32
+ MemberInfo memberInfo = typeof ( DerivedThing ) . GetSelectedMembers ( new List < string > ( ) )
33
+ . FirstOrDefault ( m => m . Name == propertyName ) ;
34
34
35
35
//assert
36
36
Assert . Equal ( reflectedType . FullName , memberInfo . ReflectedType . FullName ) ;
37
37
}
38
38
39
- public abstract class BaseThing
39
+ [ Fact ]
40
+ public void GetSelectedMembers_WhenSelectIsEmpty_MustReturnAllLiteralAndLiteralListMembers ( )
41
+ {
42
+ // Act
43
+ var memberInfos = typeof ( Thing ) . GetSelectedMembers ( Enumerable . Empty < string > ( ) . ToList ( ) ) ;
44
+
45
+ // Assert
46
+ Assert . Multiple ( ( ) =>
47
+ {
48
+ var names = memberInfos . Select ( mi => mi . Name ) . ToList ( ) ;
49
+
50
+ Assert . DoesNotContain ( memberInfos , name => name . Name == nameof ( Thing . Objects ) ) ;
51
+
52
+ Assert . Contains ( names , name => name == nameof ( Thing . ParametersArray ) ) ;
53
+ Assert . Contains ( names , name => name == nameof ( Thing . ParametersList ) ) ;
54
+ Assert . Contains ( names , name => name == nameof ( Thing . Ints ) ) ;
55
+ Assert . Contains ( names , name => name == nameof ( Thing . Strings ) ) ;
56
+ Assert . Contains ( names , name => name == nameof ( Thing . Booleans ) ) ;
57
+ Assert . Contains ( names , name => name == nameof ( Thing . DateTimes ) ) ;
58
+ Assert . Contains ( names , name => name == nameof ( Thing . Dates ) ) ;
59
+ Assert . Contains ( names , name => name == nameof ( Thing . Guides ) ) ;
60
+ Assert . Contains ( names , name => name == nameof ( Thing . UnsignedInts ) ) ;
61
+ Assert . Contains ( names , name => name == nameof ( Thing . Name ) ) ;
62
+ Assert . Contains ( names , name => name == nameof ( Thing . Id ) ) ;
63
+ Assert . Contains ( names , name => name == nameof ( Thing . Description ) ) ;
64
+ } ) ;
65
+ }
66
+
67
+ private abstract class BaseThing
40
68
{
41
69
public string Name { get ; set ; }
42
70
}
43
71
44
- public class DerivedThing : BaseThing , IDerivedThing
72
+ private class DerivedThing : BaseThing , IDerivedThing
45
73
{
46
74
public Guid Id { get ; set ; }
47
75
public string Description { get ; set ; }
48
76
}
49
77
50
- public interface IDerivedThing
78
+ private interface IDerivedThing
79
+ {
80
+ public string Description { get ; set ; }
81
+ }
82
+
83
+ private class Thing
51
84
{
85
+ public string Name { get ; set ; }
86
+ public Guid Id { get ; set ; }
52
87
public string Description { get ; set ; }
88
+ public byte [ ] DataInBytes { get ; set ; }
89
+ public string [ ] ParametersArray { get ; set ; }
90
+ public ICollection < string > Strings { get ; set ; }
91
+ public List < string > ParametersList { get ; set ; }
92
+ public List < bool > Booleans { get ; set ; }
93
+ public ISet < DateTime > DateTimes { get ; set ; }
94
+ public ISet < DateOnly > Dates { get ; set ; }
95
+ public HashSet < Guid > Guides { get ; set ; }
96
+ public uint [ ] UnsignedInts { get ; set ; }
97
+ public IEnumerable < int > Ints { get ; set ; }
98
+ public List < object > Objects { get ; set ; }
53
99
}
54
100
}
55
- }
101
+ }
0 commit comments