1
1
using System . Collections ;
2
- using System . Collections . Generic ;
2
+ using System . Reflection ;
3
3
using NHibernate . Transform ;
4
4
using NUnit . Framework ;
5
5
@@ -11,7 +11,7 @@ public class AliasToBeanResultTransformerFixture : TestCase
11
11
public class WithOutPublicParameterLessCtor
12
12
{
13
13
private string something ;
14
- protected WithOutPublicParameterLessCtor ( ) { }
14
+ protected WithOutPublicParameterLessCtor ( ) { }
15
15
16
16
public WithOutPublicParameterLessCtor ( string something )
17
17
{
@@ -48,8 +48,10 @@ public class PublicPropertiesSimpleDTO
48
48
49
49
public class PrivateFieldsSimpleDTO
50
50
{
51
+ #pragma warning disable CS0649
51
52
private object id ;
52
53
private string name ;
54
+ #pragma warning restore CS0649
53
55
54
56
public object Id { get { return id ; } }
55
57
public string Name { get { return name ; } }
@@ -67,220 +69,210 @@ public class PublicInheritedPropertiesSimpleDTO : BasePublicPropsSimpleDTO
67
69
68
70
public class BasePrivateFieldSimpleDTO
69
71
{
72
+ #pragma warning disable CS0649
70
73
private object id ;
74
+ #pragma warning restore CS0649
71
75
public object Id { get { return id ; } }
72
76
}
73
77
74
78
public class PrivateInheritedFieldsSimpleDTO : BasePrivateFieldSimpleDTO
75
79
{
80
+ #pragma warning disable CS0649
76
81
private string name ;
82
+ #pragma warning restore CS0649
77
83
public string Name { get { return name ; } }
78
84
}
79
85
86
+ public class PropertiesInsensitivelyDuplicated
87
+ {
88
+ public object Id { get ; set ; }
89
+ public string NaMe { get ; set ; }
90
+ public string NamE { get ; set ; }
91
+ }
92
+
93
+ public class PrivateInheritedFieldsSimpleDTO2 : BasePrivateFieldSimpleDTO
94
+ {
95
+ #pragma warning disable CS0649
96
+ private string namE ;
97
+ #pragma warning restore CS0649
98
+ public string Name { get { return namE ; } }
99
+ }
100
+
101
+ public class NewPropertiesSimpleDTO : PrivateInheritedFieldsSimpleDTO2
102
+ {
103
+ public new string Name { get ; set ; }
104
+ internal string NaMe { get ; set ; }
105
+
106
+ public object iD { get ; set ; }
107
+ }
108
+
80
109
#region Overrides of TestCase
81
110
82
111
protected override IList Mappings
83
112
{
84
- get { return new [ ] { "TransformTests.Simple.hbm.xml" } ; }
113
+ get { return new [ ] { "TransformTests.Simple.hbm.xml" } ; }
85
114
}
86
115
87
116
protected override string MappingsAssembly
88
117
{
89
118
get { return "NHibernate.Test" ; }
90
119
}
91
120
92
- #endregion
93
-
94
- [ Test ]
95
- public void WorkWithOutPublicParameterLessCtor ( )
121
+ protected override void OnSetUp ( )
96
122
{
97
- try
123
+ using ( var s = OpenSession ( ) )
98
124
{
99
- Setup ( ) ;
100
-
101
- using ( ISession s = OpenSession ( ) )
125
+ using ( s . BeginTransaction ( ) )
102
126
{
103
- IList < WithOutPublicParameterLessCtor > l =
104
- s . CreateSQLQuery ( "select s.Name as something from Simple s" ) . SetResultTransformer (
105
- Transformers . AliasToBean < WithOutPublicParameterLessCtor > ( ) ) . List < WithOutPublicParameterLessCtor > ( ) ;
106
- Assert . That ( l . Count , Is . EqualTo ( 2 ) ) ;
107
- Assert . That ( l , Has . All . Not . Null ) ;
127
+ s . Save ( new Simple { Name = "Name1" } ) ;
128
+ s . Save ( new Simple { Name = "Name2" } ) ;
129
+ s . Transaction . Commit ( ) ;
108
130
}
109
131
}
110
- finally
111
- {
112
- Cleanup ( ) ;
113
- }
114
132
}
115
133
116
- [ Test ]
117
- public void ToPublicProperties_WithoutAnyProjections ( )
134
+ protected override void OnTearDown ( )
118
135
{
119
- try
136
+ using ( var s = OpenSession ( ) )
120
137
{
121
- Setup ( ) ;
122
-
123
- using ( ISession s = OpenSession ( ) )
138
+ using ( s . BeginTransaction ( ) )
124
139
{
125
- var transformer = Transformers . AliasToBean < PublicPropertiesSimpleDTO > ( ) ;
126
- IList < PublicPropertiesSimpleDTO > l = s . CreateSQLQuery ( "select * from Simple" )
127
- . SetResultTransformer ( transformer )
128
- . List < PublicPropertiesSimpleDTO > ( ) ;
129
- Assert . That ( l . Count , Is . EqualTo ( 2 ) ) ;
130
- Assert . That ( l , Has . All . Not . Null ) ;
140
+ s . Delete ( "from Simple" ) ;
141
+ s . Transaction . Commit ( ) ;
131
142
}
132
143
}
133
- finally
134
- {
135
- Cleanup ( ) ;
136
- }
137
144
}
138
145
146
+ #endregion
147
+
139
148
[ Test ]
140
- public void ToPrivateFields_WithoutAnyProjections ( )
149
+ public void WorkWithOutPublicParameterLessCtor ( )
141
150
{
142
- try
143
- {
144
- Setup ( ) ;
151
+ AssertCardinalityAndSomething < WithOutPublicParameterLessCtor > ( ) ;
152
+ }
145
153
146
- using ( ISession s = OpenSession ( ) )
147
- {
148
- var transformer = Transformers . AliasToBean < PrivateFieldsSimpleDTO > ( ) ;
149
- IList < PrivateFieldsSimpleDTO > l = s . CreateSQLQuery ( "select * from Simple" )
150
- . SetResultTransformer ( transformer )
151
- . List < PrivateFieldsSimpleDTO > ( ) ;
152
- Assert . That ( l . Count , Is . EqualTo ( 2 ) ) ;
153
- Assert . That ( l , Has . All . Not . Null ) ;
154
- }
155
- }
156
- finally
157
- {
158
- Cleanup ( ) ;
159
- }
154
+ [ Test ]
155
+ public void ToPublicProperties_WithoutAnyProjections ( )
156
+ {
157
+ AssertCardinalityNameAndId < PublicPropertiesSimpleDTO > ( ) ;
160
158
}
161
159
162
160
[ Test ]
163
- public void ToInheritedPublicProperties_WithoutProjections ( )
161
+ public void ToPrivateFields_WithoutAnyProjections ( )
164
162
{
165
- try
166
- {
167
- Setup ( ) ;
163
+ AssertCardinalityNameAndId < PrivateFieldsSimpleDTO > ( ) ;
164
+ }
168
165
169
- using ( ISession s = OpenSession ( ) )
170
- {
171
- var transformer = Transformers . AliasToBean < PublicInheritedPropertiesSimpleDTO > ( ) ;
172
- IList < PublicInheritedPropertiesSimpleDTO > l = s . CreateSQLQuery ( "select * from Simple" )
173
- . SetResultTransformer ( transformer )
174
- . List < PublicInheritedPropertiesSimpleDTO > ( ) ;
175
- Assert . That ( l . Count , Is . EqualTo ( 2 ) ) ;
176
- Assert . That ( l , Has . All . Not . Null ) ;
177
- }
178
- }
179
- finally
180
- {
181
- Cleanup ( ) ;
182
- }
166
+ [ Test ]
167
+ public void ToInheritedPublicProperties_WithoutProjections ( )
168
+ {
169
+ AssertCardinalityNameAndId < PublicInheritedPropertiesSimpleDTO > ( ) ;
183
170
}
184
171
185
172
[ Test ]
186
173
public void ToInheritedPrivateFields_WithoutProjections ( )
187
174
{
188
- try
189
- {
190
- Setup ( ) ;
175
+ AssertCardinalityNameAndId < PrivateInheritedFieldsSimpleDTO > ( ) ;
176
+ }
191
177
192
- using ( ISession s = OpenSession ( ) )
193
- {
194
- var transformer = Transformers . AliasToBean < PrivateInheritedFieldsSimpleDTO > ( ) ;
195
- IList < PrivateInheritedFieldsSimpleDTO > l = s . CreateSQLQuery ( "select * from Simple" )
196
- . SetResultTransformer ( transformer )
197
- . List < PrivateInheritedFieldsSimpleDTO > ( ) ;
198
- Assert . That ( l . Count , Is . EqualTo ( 2 ) ) ;
199
- Assert . That ( l , Has . All . Not . Null ) ;
200
- Assert . That ( l , Has . All . Property ( "Id" ) . Not . Null ) ;
201
- }
202
- }
203
- finally
204
- {
205
- Cleanup ( ) ;
206
- }
178
+ [ Test ]
179
+ public void WorkWithPublicParameterLessCtor_Fields ( )
180
+ {
181
+ AssertCardinalityAndSomething < PublicParameterLessCtor > ( ) ;
207
182
}
208
183
209
184
[ Test ]
210
- public void WorkWithPublicParameterLessCtor ( )
185
+ public void WorkWithPublicParameterLessCtor_Properties ( )
211
186
{
212
- try
213
- {
214
- Setup ( ) ;
187
+ AssertCardinalityAndSomething < PublicParameterLessCtor > ( "select s.Name as Something from Simple s" ) ;
188
+ }
215
189
216
- var queryString = "select s.Name as something from Simple s" ;
217
- AssertAreWorking ( queryString ) ; // working for field access
190
+ [ Test ]
191
+ public void WorksWithStruct ( )
192
+ {
193
+ AssertCardinalityAndSomething < TestStruct > ( ) ;
194
+ }
218
195
219
- queryString = "select s.Name as Something from Simple s" ;
220
- AssertAreWorking ( queryString ) ; // working for property access
221
- }
222
- finally
196
+ [ Test ]
197
+ public void WorksWithNewProperty ( )
198
+ {
199
+ AssertCardinalityNameAndId < NewPropertiesSimpleDTO > ( ) ;
200
+ }
201
+
202
+ [ Test ]
203
+ public void WorksWithManyCandidates ( )
204
+ {
205
+ using ( var s = OpenSession ( ) )
223
206
{
224
- Cleanup ( ) ;
207
+ var transformer = Transformers . AliasToBean < NewPropertiesSimpleDTO > ( ) ;
208
+ var l = s . CreateSQLQuery ( "select id as ID, Name as NamE from Simple" )
209
+ . SetResultTransformer ( transformer )
210
+ . List < NewPropertiesSimpleDTO > ( ) ;
211
+ Assert . That ( l . Count , Is . EqualTo ( 2 ) ) ;
212
+ Assert . That ( l , Has . All . Not . Null ) ;
213
+ Assert . That ( l , Has . Some . Property ( "Name" ) . EqualTo ( "Name1" ) ) ;
214
+ Assert . That ( l , Has . Some . Property ( "Name" ) . EqualTo ( "Name2" ) ) ;
215
+ Assert . That ( l , Has . All . Property ( "iD" ) . Not . Null ) ;
216
+ Assert . That ( l , Has . All . Property ( "Id" ) . Null ) ;
217
+ Assert . That ( l , Has . All . Property ( "NaMe" ) . Null ) ;
225
218
}
226
219
}
227
220
228
221
[ Test ]
229
- public void WorksWithStruct ( )
222
+ public void ToPropertiesInsensitivelyDuplicated_WithoutAnyProjections ( )
230
223
{
231
- try
224
+ using ( var s = OpenSession ( ) )
232
225
{
233
- Setup ( ) ;
234
-
235
- IList < TestStruct > result ;
236
- using ( ISession s = OpenSession ( ) )
226
+ var transformer = Transformers . AliasToBean < PropertiesInsensitivelyDuplicated > ( ) ;
227
+ Assert . Throws < AmbiguousMatchException > ( ( ) =>
237
228
{
238
- result = s . CreateSQLQuery ( "select s.Name as something from Simple s" )
239
- . SetResultTransformer ( Transformers . AliasToBean < TestStruct > ( ) )
240
- . List < TestStruct > ( ) ;
241
- }
242
- Assert . AreEqual ( 2 , result . Count ) ;
243
- }
244
- finally
245
- {
246
- Cleanup ( ) ;
229
+ s . CreateSQLQuery ( "select * from Simple" )
230
+ . SetResultTransformer ( transformer )
231
+ . List < PropertiesInsensitivelyDuplicated > ( ) ;
232
+ } ) ;
247
233
}
248
234
}
249
235
250
- private void AssertAreWorking ( string queryString )
236
+ private void AssertCardinalityNameAndId < T > ( string queryString = "select * from Simple" )
251
237
{
252
- using ( ISession s = OpenSession ( ) )
238
+ using ( var s = OpenSession ( ) )
253
239
{
254
- IList < PublicParameterLessCtor > l =
255
- s . CreateSQLQuery ( queryString ) . SetResultTransformer (
256
- Transformers . AliasToBean < PublicParameterLessCtor > ( ) ) . List < PublicParameterLessCtor > ( ) ;
240
+ var transformer = Transformers . AliasToBean < T > ( ) ;
241
+ var l = s . CreateSQLQuery ( queryString )
242
+ . SetResultTransformer ( transformer )
243
+ . List < T > ( ) ;
257
244
Assert . That ( l . Count , Is . EqualTo ( 2 ) ) ;
258
245
Assert . That ( l , Has . All . Not . Null ) ;
246
+ Assert . That ( l , Has . Some . Property ( "Name" ) . EqualTo ( "Name1" ) ) ;
247
+ Assert . That ( l , Has . Some . Property ( "Name" ) . EqualTo ( "Name2" ) ) ;
248
+ Assert . That ( l , Has . All . Property ( "Id" ) . Not . Null ) ;
259
249
}
260
250
}
261
251
262
- private void Cleanup ( )
252
+ private void AssertCardinalityAndSomething < T > ( string queryString = "select s.Name as something from Simple s" )
263
253
{
264
- using ( ISession s = OpenSession ( ) )
254
+ using ( var s = OpenSession ( ) )
265
255
{
266
- using ( s . BeginTransaction ( ) )
267
- {
268
- s . Delete ( "from Simple" ) ;
269
- s . Transaction . Commit ( ) ;
270
- }
256
+ var transformer = Transformers . AliasToBean < T > ( ) ;
257
+ var l = s . CreateSQLQuery ( queryString )
258
+ . SetResultTransformer ( transformer )
259
+ . List < T > ( ) ;
260
+ Assert . That ( l . Count , Is . EqualTo ( 2 ) ) ;
261
+ Assert . That ( l , Has . All . Not . Null ) ;
262
+ Assert . That ( l , Has . Some . Property ( "Something" ) . EqualTo ( "Name1" ) ) ;
263
+ Assert . That ( l , Has . Some . Property ( "Something" ) . EqualTo ( "Name2" ) ) ;
271
264
}
272
265
}
273
266
274
- private void Setup ( )
267
+ private void AssertParameterLessCtorAreWorking ( string queryString )
275
268
{
276
- using ( ISession s = OpenSession ( ) )
269
+ using ( var s = OpenSession ( ) )
277
270
{
278
- using ( s . BeginTransaction ( ) )
279
- {
280
- s . Save ( new Simple { Name = "Name1" } ) ;
281
- s . Save ( new Simple { Name = "Name2" } ) ;
282
- s . Transaction . Commit ( ) ;
283
- }
271
+ var l =
272
+ s . CreateSQLQuery ( queryString ) . SetResultTransformer (
273
+ Transformers . AliasToBean < PublicParameterLessCtor > ( ) ) . List < PublicParameterLessCtor > ( ) ;
274
+ Assert . That ( l . Count , Is . EqualTo ( 2 ) ) ;
275
+ Assert . That ( l , Has . All . Not . Null ) ;
284
276
}
285
277
}
286
278
}
0 commit comments