Skip to content

Commit cc791d3

Browse files
committed
add base type required member test
1 parent a9e927e commit cc791d3

File tree

1 file changed

+97
-15
lines changed

1 file changed

+97
-15
lines changed
Lines changed: 97 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,120 @@
1-
namespace SourceGeneration.Reflection.Test;
1+
using SourceGeneration.Reflection.SourceGenerator.TestLib;
2+
3+
namespace SourceGeneration.Reflection.Test;
24

35
[TestClass]
46
public class RequiredMemberTest
57
{
68
[TestMethod]
7-
public void GetInfo()
9+
public void GetRequiredPropertyInfo()
810
{
9-
var type = SourceReflector.GetType(typeof(RequiredMemberTestObject));
11+
var type = SourceReflector.GetType(typeof(RequiredPropertyTestObject));
1012
Assert.IsNotNull(type);
11-
var p = type.GetProperty("Property");
12-
var f = type.GetField("Field");
13-
Assert.IsNotNull(p);
14-
Assert.IsNotNull(f);
1513

14+
var p = type.GetProperty("A");
15+
Assert.IsNotNull(p);
1616
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);
1727
Assert.IsTrue(f.IsRequired);
1828
}
1929

2030
[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()
2243
{
23-
var type = SourceReflector.GetType(typeof(RequiredMemberTestObject));
44+
var type = SourceReflector.GetType(typeof(RequiredFieldTestObject));
2445
Assert.IsNotNull(type);
25-
var instance = (RequiredMemberTestObject)type.GetConstructor([])!.Invoke([]);
46+
var instance = (RequiredFieldTestObject)type.GetConstructor([])!.Invoke([]);
2647
Assert.IsNotNull(instance);
48+
Assert.AreEqual(1, instance.A);
49+
}
2750

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);
3059
}
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;
3182
}
3283

3384
[SourceReflection]
34-
public class RequiredMemberTestObject
85+
public class RequiredMemberBaseType
3586
{
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+
38120
}

0 commit comments

Comments
 (0)