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