1
- namespace SourceGeneration . Reflection . Test ;
1
+ using SourceGeneration . Reflection . SourceGenerator . TestLib ;
2
+
3
+ namespace SourceGeneration . Reflection . Test ;
2
4
3
5
[ TestClass ]
4
6
public class RequiredMemberTest
5
7
{
6
8
[ TestMethod ]
7
- public void GetInfo ( )
9
+ public void GetRequiredPropertyInfo ( )
8
10
{
9
- var type = SourceReflector . GetType ( typeof ( RequiredMemberTestObject ) ) ;
11
+ var type = SourceReflector . GetType ( typeof ( RequiredPropertyTestObject ) ) ;
10
12
Assert . IsNotNull ( type ) ;
11
- var p = type . GetProperty ( "Property" ) ;
12
- var f = type . GetField ( "Field" ) ;
13
- Assert . IsNotNull ( p ) ;
14
- Assert . IsNotNull ( f ) ;
15
13
14
+ var p = type . GetProperty ( "A" ) ;
15
+ Assert . IsNotNull ( p ) ;
16
16
Assert . IsTrue ( p . IsRequired ) ;
17
+ }
18
+
19
+ [ TestMethod ]
20
+ public void GetRequiredFieldInfo ( )
21
+ {
22
+ var type = SourceReflector . GetType ( typeof ( RequiredFieldTestObject ) ) ;
23
+ Assert . IsNotNull ( type ) ;
24
+
25
+ var f = type . GetField ( "A" ) ;
26
+ Assert . IsNotNull ( f ) ;
17
27
Assert . IsTrue ( f . IsRequired ) ;
18
28
}
19
29
20
30
[ TestMethod ]
21
- public void Construct ( )
31
+ public void ConstructRequiredPropertyClass ( )
32
+ {
33
+ var type = SourceReflector . GetType ( typeof ( RequiredPropertyTestObject ) ) ;
34
+ Assert . IsNotNull ( type ) ;
35
+ var instance = ( RequiredPropertyTestObject ) type . GetConstructor ( [ ] ) ! . Invoke ( [ ] ) ;
36
+ Assert . IsNotNull ( instance ) ;
37
+
38
+ Assert . AreEqual ( 1 , instance . A ) ;
39
+ }
40
+
41
+ [ TestMethod ]
42
+ public void ConstructRequiredFieldClass ( )
22
43
{
23
- var type = SourceReflector . GetType ( typeof ( RequiredMemberTestObject ) ) ;
44
+ var type = SourceReflector . GetType ( typeof ( RequiredFieldTestObject ) ) ;
24
45
Assert . IsNotNull ( type ) ;
25
- var instance = ( RequiredMemberTestObject ) type . GetConstructor ( [ ] ) ! . Invoke ( [ ] ) ;
46
+ var instance = ( RequiredFieldTestObject ) type . GetConstructor ( [ ] ) ! . Invoke ( [ ] ) ;
26
47
Assert . IsNotNull ( instance ) ;
48
+ Assert . AreEqual ( 1 , instance . A ) ;
49
+ }
27
50
28
- Assert . AreEqual ( 1 , instance . Field ) ;
29
- Assert . AreEqual ( 1 , instance . Property ) ;
51
+ [ TestMethod ]
52
+ public void ConstructDerivedType ( )
53
+ {
54
+ var type = SourceReflector . GetType ( typeof ( RequiredFieldTestObject ) ) ;
55
+ Assert . IsNotNull ( type ) ;
56
+ var instance = ( RequiredFieldTestObject ) type . GetConstructor ( [ ] ) ! . Invoke ( [ ] ) ;
57
+ Assert . IsNotNull ( instance ) ;
58
+ Assert . AreEqual ( 1 , instance . A ) ;
30
59
}
60
+
61
+ [ TestMethod ]
62
+ public void ConstructRequiredMemberFromLibClass ( )
63
+ {
64
+ var type = SourceReflector . GetType ( typeof ( RequiredMemberDerivedLibType ) ) ;
65
+ Assert . IsNotNull ( type ) ;
66
+ var instance = ( RequiredMemberDerivedLibType ) type . GetConstructor ( [ ] ) ! . Invoke ( [ ] ) ;
67
+ Assert . IsNotNull ( instance ) ;
68
+ Assert . AreEqual ( 1 , instance . RequiredProperty ) ;
69
+ }
70
+ }
71
+
72
+ [ SourceReflection ]
73
+ public class RequiredPropertyTestObject
74
+ {
75
+ public required int A { get ; set ; } = 1 ;
76
+ }
77
+
78
+ [ SourceReflection ]
79
+ public class RequiredFieldTestObject
80
+ {
81
+ public required int A = 1 ;
31
82
}
32
83
33
84
[ SourceReflection ]
34
- public class RequiredMemberTestObject
85
+ public class RequiredMemberBaseType
35
86
{
36
- public required int Property { get ; set ; } = 1 ;
37
- public required int Field = 1 ;
87
+ public required int A { get ; set ; } = 1 ;
88
+ public required int B = 1 ;
89
+ }
90
+
91
+ [ SourceReflection ]
92
+ public class RequiredMemberDerivedType1 : RequiredMemberBaseType
93
+ {
94
+ public required int C = 1 ;
95
+ }
96
+
97
+ [ SourceReflection ]
98
+ public class RequiredMemberDerivedType2 : RequiredMemberDerivedType1
99
+ {
100
+ }
101
+
102
+ [ SourceReflection ]
103
+ public class RequiredMemberDerivedLibType : LibTestClass
104
+ {
105
+ }
106
+
107
+
108
+ [ SourceReflection ]
109
+ public class RequiredMemberDefaultValueType
110
+ {
111
+ public required int A { get ; set ; } = 1 ;
112
+ public required bool B = true ;
113
+ public required string C { get ; set ; } = "abced" ;
114
+ public required DateTime D { get ; set ; } = new DateTime ( 1234567 ) ;
115
+ public required TimeOnly E { get ; set ; } = TimeOnly . MaxValue ;
116
+ public required object F = new ( ) ;
117
+ public required List < string > H { get ; set ; } = [ ] ;
118
+ //public required RequiredMemberDerivedType1 G { get; set; } = new RequiredMemberDerivedType1 { A = 1, B = 2, C = 3 };
119
+
38
120
}
0 commit comments