1
+ using System . Collections . Generic ;
2
+ using FluentAssertions ;
3
+ using Xunit ;
4
+
5
+ namespace System . Linq . Dynamic . Core . Tests ;
6
+
7
+ public class DynamicClassTest
8
+ {
9
+ [ Fact ]
10
+ public void DynamicClass_GetProperties_Should_Work ( )
11
+ {
12
+ // Arrange
13
+ var range = new List < object >
14
+ {
15
+ new { FieldName = "TestFieldName" , Value = 3.14159 }
16
+ } ;
17
+
18
+ // Act
19
+ var rangeResult = range . AsQueryable ( ) . Select ( "new(FieldName as FieldName)" ) . ToDynamicList ( ) ;
20
+ var item = rangeResult . First ( ) ;
21
+
22
+ var call = ( ) => item . GetDynamicMemberNames ( ) ;
23
+ call . Should ( ) . NotThrow ( ) ;
24
+ }
25
+
26
+ [ Fact ]
27
+ public void DynamicClass_GetPropertyValue_Should_Work ( )
28
+ {
29
+ // Arrange
30
+ var test = "Test" ;
31
+ var range = new List < object >
32
+ {
33
+ new { FieldName = test , Value = 3.14159 }
34
+ } ;
35
+
36
+ // Act
37
+ var rangeResult = range . AsQueryable ( ) . Select ( "new(FieldName as FieldName)" ) . ToDynamicList ( ) ;
38
+ var item = rangeResult . First ( ) ;
39
+
40
+ var value = item . FieldName as string ;
41
+ value . Should ( ) . Be ( test ) ;
42
+ }
43
+
44
+ [ Fact ]
45
+ public void DynamicClass_GettingValue_ByIndex_Should_Work ( )
46
+ {
47
+ // Arrange
48
+ var test = "Test" ;
49
+ var range = new List < object >
50
+ {
51
+ new { FieldName = test , Value = 3.14159 }
52
+ } ;
53
+
54
+ // Act
55
+ var rangeResult = range . AsQueryable ( ) . Select ( "new(FieldName as FieldName)" ) . ToDynamicList ( ) ;
56
+ var item = rangeResult . First ( ) ;
57
+
58
+ var value = item [ "FieldName" ] as string ;
59
+ value . Should ( ) . Be ( test ) ;
60
+ }
61
+
62
+ [ Fact ]
63
+ public void DynamicClass_SettingExistingPropertyValue_ByIndex_Should_Work ( )
64
+ {
65
+ // Arrange
66
+ var test = "Test" ;
67
+ var newTest = "abc" ;
68
+ var range = new List < object >
69
+ {
70
+ new { FieldName = test , Value = 3.14159 }
71
+ } ;
72
+
73
+ // Act
74
+ var rangeResult = range . AsQueryable ( ) . Select ( "new(FieldName as FieldName)" ) . ToDynamicList ( ) ;
75
+ var item = rangeResult . First ( ) ;
76
+
77
+ item [ "FieldName" ] = newTest ;
78
+ var value = item [ "FieldName" ] as string ;
79
+ value . Should ( ) . Be ( newTest ) ;
80
+ }
81
+
82
+ [ Fact ]
83
+ public void DynamicClass_SettingNewProperty_ByIndex_Should_Work ( )
84
+ {
85
+ // Arrange
86
+ var test = "Test" ;
87
+ var newTest = "abc" ;
88
+ var range = new List < object >
89
+ {
90
+ new { FieldName = test , Value = 3.14159 }
91
+ } ;
92
+
93
+ // Act
94
+ var rangeResult = range . AsQueryable ( ) . Select ( "new(FieldName as FieldName)" ) . ToDynamicList ( ) ;
95
+ var item = rangeResult . First ( ) ;
96
+
97
+ item [ "X" ] = newTest ;
98
+ var value = item [ "X" ] as string ;
99
+ value . Should ( ) . Be ( newTest ) ;
100
+ }
101
+ }
0 commit comments