-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFieldInfoExtensionsTests.cs
More file actions
103 lines (84 loc) · 3.22 KB
/
FieldInfoExtensionsTests.cs
File metadata and controls
103 lines (84 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.Reflection;
using Xunit;
namespace Platform.Reflection.Tests
{
public class FieldInfoExtensionsTests
{
private static class TestClass
{
public static int StaticIntField = 42;
public static string StaticStringField = "test field";
public static bool StaticBoolField = true;
public static readonly DateTime StaticReadOnlyField = new DateTime(2023, 1, 1);
}
[Fact]
public void GetStaticValueIntFieldTest()
{
var fieldInfo = typeof(TestClass).GetField(nameof(TestClass.StaticIntField));
Assert.NotNull(fieldInfo);
var value = fieldInfo.GetStaticValue<int>();
Assert.Equal(42, value);
}
[Fact]
public void GetStaticValueStringFieldTest()
{
var fieldInfo = typeof(TestClass).GetField(nameof(TestClass.StaticStringField));
Assert.NotNull(fieldInfo);
var value = fieldInfo.GetStaticValue<string>();
Assert.Equal("test field", value);
}
[Fact]
public void GetStaticValueBoolFieldTest()
{
var fieldInfo = typeof(TestClass).GetField(nameof(TestClass.StaticBoolField));
Assert.NotNull(fieldInfo);
var value = fieldInfo.GetStaticValue<bool>();
Assert.True(value);
}
[Fact]
public void GetStaticValueObjectFieldTest()
{
var fieldInfo = typeof(TestClass).GetField(nameof(TestClass.StaticStringField));
Assert.NotNull(fieldInfo);
var value = fieldInfo.GetStaticValue<object>();
Assert.Equal("test field", value);
}
[Fact]
public void GetStaticValueReadOnlyFieldTest()
{
var fieldInfo = typeof(TestClass).GetField(nameof(TestClass.StaticReadOnlyField));
Assert.NotNull(fieldInfo);
var value = fieldInfo.GetStaticValue<DateTime>();
Assert.Equal(new DateTime(2023, 1, 1), value);
}
[Fact]
public void GetStaticValueWithFieldModificationTest()
{
var fieldInfo = typeof(TestClass).GetField(nameof(TestClass.StaticIntField));
Assert.NotNull(fieldInfo);
// Change the field value
TestClass.StaticIntField = 100;
var value = fieldInfo.GetStaticValue<int>();
Assert.Equal(100, value);
// Reset for other tests
TestClass.StaticIntField = 42;
}
[Fact]
public void GetStaticValueFromSystemTypeTest()
{
var fieldInfo = typeof(int).GetField("MaxValue");
Assert.NotNull(fieldInfo);
var value = fieldInfo.GetStaticValue<int>();
Assert.Equal(int.MaxValue, value);
}
[Fact]
public void GetStaticValueFromEnumTest()
{
var fieldInfo = typeof(DayOfWeek).GetField("Monday");
Assert.NotNull(fieldInfo);
var value = fieldInfo.GetStaticValue<DayOfWeek>();
Assert.Equal(DayOfWeek.Monday, value);
}
}
}