1
+ using NUnit . Framework ;
2
+
3
+ namespace ServiceStack . Text . Tests . UseCases
4
+ {
5
+ public class MyType
6
+ {
7
+ public long LongProp { get ; set ; }
8
+ public string StringProp { get ; set ; }
9
+
10
+ public long LongField ;
11
+ public string StringField ;
12
+ }
13
+
14
+ public class TypedAccessors_API_Examples
15
+ {
16
+ [ Test ]
17
+ public void Can_access_IntProp ( )
18
+ {
19
+ var runtimeType = typeof ( MyType ) ;
20
+
21
+ var instance = runtimeType . CreateInstance ( ) ;
22
+ var pi = runtimeType . GetProperty ( "LongProp" ) ;
23
+ var setter = pi . CreateSetter ( ) ;
24
+ var getter = pi . CreateGetter ( ) ;
25
+
26
+ setter ( instance , 1L ) ;
27
+ var value = getter ( instance ) ;
28
+
29
+ Assert . That ( value , Is . EqualTo ( 1 ) ) ;
30
+ }
31
+
32
+ [ Test ]
33
+ public void Can_access_IntProp_Typed ( )
34
+ {
35
+ var runtimeType = typeof ( MyType ) ;
36
+
37
+ var instance = runtimeType . CreateInstance < MyType > ( ) ;
38
+ var pi = runtimeType . GetProperty ( "LongProp" ) ;
39
+ var setter = pi . CreateSetter < MyType > ( ) ;
40
+ var getter = pi . CreateGetter < MyType > ( ) ;
41
+
42
+ setter ( instance , 1L ) ;
43
+ var value = getter ( instance ) ;
44
+
45
+ Assert . That ( value , Is . EqualTo ( 1 ) ) ;
46
+ }
47
+
48
+ [ Test ]
49
+ public void Can_access_StringProp ( )
50
+ {
51
+ var runtimeType = typeof ( MyType ) ;
52
+
53
+ var instance = runtimeType . CreateInstance ( ) ;
54
+ var pi = runtimeType . GetProperty ( "StringProp" ) ;
55
+ var setter = pi . CreateSetter ( ) ;
56
+ var getter = pi . CreateGetter ( ) ;
57
+
58
+ setter ( instance , "foo" ) ;
59
+ var value = getter ( instance ) ;
60
+
61
+ Assert . That ( value , Is . EqualTo ( "foo" ) ) ;
62
+ }
63
+
64
+ [ Test ]
65
+ public void Can_access_StringProp_Typed ( )
66
+ {
67
+ var runtimeType = typeof ( MyType ) ;
68
+
69
+ var instance = runtimeType . CreateInstance < MyType > ( ) ;
70
+ var pi = runtimeType . GetProperty ( "StringProp" ) ;
71
+ var setter = pi . CreateSetter < MyType > ( ) ;
72
+ var getter = pi . CreateGetter < MyType > ( ) ;
73
+
74
+ setter ( instance , "foo" ) ;
75
+ var value = getter ( instance ) ;
76
+
77
+ Assert . That ( value , Is . EqualTo ( "foo" ) ) ;
78
+ }
79
+
80
+
81
+ [ Test ]
82
+ public void Can_access_IntField ( )
83
+ {
84
+ var runtimeType = typeof ( MyType ) ;
85
+
86
+ var instance = runtimeType . CreateInstance ( ) ;
87
+ var pi = runtimeType . GetField ( "LongField" ) ;
88
+ var setter = pi . CreateSetter ( ) ;
89
+ var getter = pi . CreateGetter ( ) ;
90
+
91
+ setter ( instance , 1L ) ;
92
+ var value = getter ( instance ) ;
93
+
94
+ Assert . That ( value , Is . EqualTo ( 1 ) ) ;
95
+ }
96
+
97
+ [ Test ]
98
+ public void Can_access_IntField_Typed ( )
99
+ {
100
+ var runtimeType = typeof ( MyType ) ;
101
+
102
+ var instance = runtimeType . CreateInstance < MyType > ( ) ;
103
+ var pi = runtimeType . GetField ( "LongField" ) ;
104
+ var setter = pi . CreateSetter < MyType > ( ) ;
105
+ var getter = pi . CreateGetter < MyType > ( ) ;
106
+
107
+ setter ( instance , 1L ) ;
108
+ var value = getter ( instance ) ;
109
+
110
+ Assert . That ( value , Is . EqualTo ( 1 ) ) ;
111
+ }
112
+
113
+ [ Test ]
114
+ public void Can_access_StringField ( )
115
+ {
116
+ var runtimeType = typeof ( MyType ) ;
117
+
118
+ var instance = runtimeType . CreateInstance ( ) ;
119
+ var pi = runtimeType . GetField ( "StringField" ) ;
120
+ var setter = pi . CreateSetter ( ) ;
121
+ var getter = pi . CreateGetter ( ) ;
122
+
123
+ setter ( instance , "foo" ) ;
124
+ var value = getter ( instance ) ;
125
+
126
+ Assert . That ( value , Is . EqualTo ( "foo" ) ) ;
127
+ }
128
+
129
+ [ Test ]
130
+ public void Can_access_StringField_Typed ( )
131
+ {
132
+ var runtimeType = typeof ( MyType ) ;
133
+
134
+ var instance = runtimeType . CreateInstance < MyType > ( ) ;
135
+ var pi = runtimeType . GetField ( "StringField" ) ;
136
+ var setter = pi . CreateSetter < MyType > ( ) ;
137
+ var getter = pi . CreateGetter < MyType > ( ) ;
138
+
139
+ setter ( instance , "foo" ) ;
140
+ var value = getter ( instance ) ;
141
+
142
+ Assert . That ( value , Is . EqualTo ( "foo" ) ) ;
143
+ }
144
+
145
+ [ Test ]
146
+ public void Can_use_TypedProperties_accessor ( )
147
+ {
148
+ var runtimeType = typeof ( MyType ) ;
149
+ var typeProps = TypeProperties . Get ( runtimeType ) ; //Equivalent to:
150
+ // typeProps = TypeProperties<MyType>.Instance;
151
+
152
+ var instance = runtimeType . CreateInstance ( ) ;
153
+
154
+ var propAccessor = typeProps . GetAccessor ( "LongProp" ) ;
155
+ propAccessor . PublicSetter ( instance , 1L ) ;
156
+ Assert . That ( propAccessor . PublicGetter ( instance ) , Is . EqualTo ( 1 ) ) ;
157
+
158
+ typeProps . GetPublicSetter ( "StringProp" ) ( instance , "foo" ) ;
159
+ var value = typeProps . GetPublicGetter ( "StringProp" ) ( instance ) ;
160
+ Assert . That ( value , Is . EqualTo ( "foo" ) ) ;
161
+ }
162
+
163
+ [ Test ]
164
+ public void Can_use_TypedFields_accessor ( )
165
+ {
166
+ var runtimeType = typeof ( MyType ) ;
167
+ var typeProps = TypeFields . Get ( runtimeType ) ; //Equivalent to:
168
+ // typeProps = TypeFields<MyType>.Instance;
169
+
170
+ var instance = runtimeType . CreateInstance ( ) ;
171
+
172
+ var propAccessor = typeProps . GetAccessor ( "LongField" ) ;
173
+ propAccessor . PublicSetter ( instance , 1L ) ;
174
+ Assert . That ( propAccessor . PublicGetter ( instance ) , Is . EqualTo ( 1 ) ) ;
175
+
176
+ typeProps . GetPublicSetter ( "StringField" ) ( instance , "foo" ) ;
177
+ var value = typeProps . GetPublicGetter ( "StringField" ) ( instance ) ;
178
+ Assert . That ( value , Is . EqualTo ( "foo" ) ) ;
179
+ }
180
+ }
181
+ }
0 commit comments