@@ -49,23 +49,28 @@ protected override void OnTearDown()
49
49
}
50
50
51
51
protected override void CreateSchema ( )
52
+ {
53
+ CreateTable ( "Integer" ) ;
54
+ CreateTable ( "DateTime" ) ;
55
+ CreateTable ( "Double" ) ;
56
+ CreateTable ( "Decimal" ) ;
57
+ }
58
+
59
+ private void CreateTable ( string name )
52
60
{
53
61
var sb = new StringBuilder ( ) ;
54
62
var guidType = Dialect . GetTypeName ( SqlTypeFactory . Guid ) ;
55
63
var stringType = Dialect . GetTypeName ( SqlTypeFactory . GetAnsiString ( 255 ) ) ;
56
64
57
65
var catalog = GetQuotedDefaultCatalog ( ) ;
58
66
var schema = GetQuotedDefaultSchema ( ) ;
59
- var table = GetQualifiedName ( catalog , schema , "LocaleEntity ") ;
67
+ var table = GetQualifiedName ( catalog , schema , $ " { name } Entity ") ;
60
68
61
69
sb . Append ( $ "{ Dialect . CreateTableString } { table } (") ;
62
70
63
71
// Generate columns
64
72
sb . Append ( $ "Id { guidType } , ") ;
65
- sb . Append ( $ "IntegerValue { stringType } , ") ;
66
- sb . Append ( $ "DateTimeValue { stringType } , ") ;
67
- sb . Append ( $ "DoubleValue { stringType } , ") ;
68
- sb . Append ( $ "DecimalValue { stringType } ") ;
73
+ sb . Append ( $ "Value { stringType } , ") ;
69
74
70
75
// Add the primary key contraint for the identity column
71
76
sb . Append ( $ ", { Dialect . PrimaryKeyString } ( Id )") ;
@@ -93,7 +98,7 @@ private string GetQuotedDefaultCatalog()
93
98
var t = cfg . GetType ( ) ;
94
99
var getQuotedDefaultCatalog = t . GetMethod ( "GetQuotedDefaultCatalog" , BindingFlags . Instance | BindingFlags . NonPublic ) ;
95
100
96
- return ( string ) getQuotedDefaultCatalog . Invoke ( cfg , [ Dialect ] ) ;
101
+ return ( string ) getQuotedDefaultCatalog . Invoke ( cfg , [ Dialect ] ) ;
97
102
}
98
103
99
104
private string GetQuotedDefaultSchema ( )
@@ -109,119 +114,68 @@ private string GetQualifiedName(string catalog, string schema, string name)
109
114
return Dialect . Qualify ( catalog , schema , name ) ;
110
115
}
111
116
112
- [ Test , TestCaseSource ( nameof ( GetTestCases ) ) ]
113
- public async Task TestDateTimeAsync ( CultureInfo from , CultureInfo to )
117
+ private async Task PerformTestAsync < T , U > ( CultureInfo from , CultureInfo to , T expectedValue , Action < T , T > assert , CancellationToken cancellationToken = default ( CancellationToken ) )
118
+ where T : struct
119
+ where U : Entity < T > , new ( )
114
120
{
115
- DateTime leapDay = new DateTime ( 2024 , 2 , 29 , new GregorianCalendar ( GregorianCalendarTypes . USEnglish ) ) ;
116
121
object id ;
117
122
118
123
CurrentCulture = from ;
119
124
using ( var session = OpenSession ( ) )
120
125
using ( var tx = session . BeginTransaction ( ) )
121
126
{
122
- var entity = new LocaleEntity ( )
127
+ var entity = new U ( )
123
128
{
124
- DateTimeValue = leapDay
129
+ Value = expectedValue
125
130
} ;
126
131
127
- id = await ( session . SaveAsync ( entity ) ) ;
128
- await ( tx . CommitAsync ( ) ) ;
132
+ id = await ( session . SaveAsync ( entity , cancellationToken ) ) ;
133
+ await ( tx . CommitAsync ( cancellationToken ) ) ;
129
134
}
130
135
131
136
CurrentCulture = to ;
132
137
using ( var session = OpenSession ( ) )
133
138
using ( var tx = session . BeginTransaction ( ) )
134
139
{
135
- var entity = await ( session . GetAsync < LocaleEntity > ( id ) ) ;
140
+ var entity = await ( session . GetAsync < U > ( id , cancellationToken ) ) ;
136
141
137
- Assert . AreEqual ( leapDay , entity . DateTimeValue ) ;
142
+ assert ( expectedValue , entity . Value ) ;
138
143
}
139
144
}
140
145
141
146
[ Test , TestCaseSource ( nameof ( GetTestCases ) ) ]
142
- public async Task TestDecimalAsync ( CultureInfo from , CultureInfo to )
147
+ public async Task TestDateTimeAsync ( CultureInfo from , CultureInfo to )
143
148
{
144
- decimal decimalValue = 12.3m ;
145
- object id ;
146
-
147
- CurrentCulture = from ;
148
- using ( var session = OpenSession ( ) )
149
- using ( var tx = session . BeginTransaction ( ) )
150
- {
151
- var entity = new LocaleEntity ( )
152
- {
153
- DecimalValue = decimalValue
154
- } ;
149
+ DateTime leapDay = new DateTime ( 2024 , 2 , 29 , new GregorianCalendar ( GregorianCalendarTypes . USEnglish ) ) ;
155
150
156
- id = await ( session . SaveAsync ( entity ) ) ;
157
- await ( tx . CommitAsync ( ) ) ;
158
- }
151
+ await ( PerformTestAsync < DateTime , DateTimeEntity > ( from , to , leapDay , ( expected , actual ) => Assert . AreEqual ( expected , actual ) ) ) ;
152
+ }
159
153
160
- CurrentCulture = to ;
161
- using ( var session = OpenSession ( ) )
162
- using ( var tx = session . BeginTransaction ( ) )
163
- {
164
- var entity = await ( session . GetAsync < LocaleEntity > ( id ) ) ;
154
+ [ Test , TestCaseSource ( nameof ( GetTestCases ) ) ]
155
+ public async Task TestDecimalAsync ( CultureInfo from , CultureInfo to )
156
+ {
157
+ decimal decimalValue = 12.3m ;
165
158
166
- Assert . AreEqual ( decimalValue , entity . DecimalValue ) ;
167
- }
159
+ await ( PerformTestAsync < decimal , DecimalEntity > ( from , to , decimalValue , ( expected , actual ) => Assert . AreEqual ( expected , actual ) ) ) ;
168
160
}
169
161
170
162
[ Test , TestCaseSource ( nameof ( GetTestCases ) ) ]
171
163
public async Task TestDoubleAsync ( CultureInfo from , CultureInfo to )
172
164
{
173
165
double doubleValue = 12.3d ;
174
- object id ;
175
166
176
- CurrentCulture = from ;
177
- using ( var session = OpenSession ( ) )
178
- using ( var tx = session . BeginTransaction ( ) )
179
- {
180
- var entity = new LocaleEntity ( )
181
- {
182
- DoubleValue = doubleValue
183
- } ;
184
-
185
- id = await ( session . SaveAsync ( entity ) ) ;
186
- await ( tx . CommitAsync ( ) ) ;
187
- }
188
-
189
- CurrentCulture = to ;
190
- using ( var session = OpenSession ( ) )
191
- using ( var tx = session . BeginTransaction ( ) )
192
- {
193
- var entity = await ( session . GetAsync < LocaleEntity > ( id ) ) ;
194
-
195
- Assert . True ( Math . Abs ( doubleValue - entity . DoubleValue ) < double . Epsilon , $ "Expected: { doubleValue } \n But was: { entity . DoubleValue } \n ") ;
196
- }
167
+ await ( PerformTestAsync < double , DoubleEntity > ( from , to , doubleValue ,
168
+ ( expected , actual ) => Assert . True ( Math . Abs ( expected - actual ) < double . Epsilon , $ "Expected: { expected } \n But was: { actual } \n ")
169
+ ) ) ;
197
170
}
198
171
199
- public async Task TestIntegerAsync ( CultureInfo from , CultureInfo to , CancellationToken cancellationToken = default ( CancellationToken ) )
172
+ [ Test , TestCaseSource ( nameof ( GetTestCases ) ) ]
173
+
174
+ public async Task TestIntegerAsync ( CultureInfo from , CultureInfo to )
200
175
{
201
176
int integerValue = 123 ;
202
- object id ;
203
177
204
- CurrentCulture = from ;
205
- using ( var session = OpenSession ( ) )
206
- using ( var tx = session . BeginTransaction ( ) )
207
- {
208
- var entity = new LocaleEntity ( )
209
- {
210
- IntegerValue = integerValue
211
- } ;
212
-
213
- id = await ( session . SaveAsync ( entity , cancellationToken ) ) ;
214
- await ( tx . CommitAsync ( cancellationToken ) ) ;
215
- }
216
-
217
- CurrentCulture = to ;
218
- using ( var session = OpenSession ( ) )
219
- using ( var tx = session . BeginTransaction ( ) )
220
- {
221
- var entity = await ( session . GetAsync < LocaleEntity > ( id , cancellationToken ) ) ;
222
-
223
- Assert . AreEqual ( integerValue , entity . IntegerValue ) ;
224
- }
178
+ await ( PerformTestAsync < int , IntegerEntity > ( from , to , integerValue , ( expected , actual ) => Assert . AreEqual ( expected , actual ) ) ) ;
225
179
}
226
180
227
181
private CultureInfo CurrentCulture
0 commit comments