10
10
11
11
using System ;
12
12
using System . Collections ;
13
+ using System . Data ;
13
14
using NHibernate . Dialect ;
14
15
using NHibernate . Driver ;
16
+ using NHibernate . Engine ;
17
+ using NHibernate . SqlTypes ;
15
18
using NUnit . Framework ;
19
+ using Environment = NHibernate . Cfg . Environment ;
16
20
17
21
namespace NHibernate . Test . DriverTest
18
22
{
@@ -21,19 +25,30 @@ namespace NHibernate.Test.DriverTest
21
25
[ TestFixture ]
22
26
public class SqlClientDriverFixtureAsync : TestCase
23
27
{
24
- protected override string MappingsAssembly
28
+ protected override string MappingsAssembly => "NHibernate.Test" ;
29
+
30
+ protected override IList Mappings => new [ ] { "DriverTest.MultiTypeEntity.hbm.xml" } ;
31
+
32
+ protected override bool AppliesTo ( Dialect . Dialect dialect )
25
33
{
26
- get { return "NHibernate.Test" ; }
34
+ return dialect is MsSql2008Dialect ;
27
35
}
28
36
29
- protected override IList Mappings
37
+ protected override bool AppliesTo ( ISessionFactoryImplementor factory )
30
38
{
31
- get { return new [ ] { "DriverTest.MultiTypeEntity.hbm.xml" } ; }
39
+ return factory . ConnectionProvider . Driver is SqlClientDriver ;
32
40
}
33
41
34
- protected override bool AppliesTo ( Dialect . Dialect dialect )
42
+ protected override void OnTearDown ( )
35
43
{
36
- return dialect is MsSql2008Dialect ;
44
+ base . OnTearDown ( ) ;
45
+
46
+ using ( var s = OpenSession ( ) )
47
+ using ( var t = s . BeginTransaction ( ) )
48
+ {
49
+ s . CreateQuery ( "delete from MultiTypeEntity" ) . ExecuteUpdate ( ) ;
50
+ t . Commit ( ) ;
51
+ }
37
52
}
38
53
39
54
[ Test ]
@@ -42,50 +57,70 @@ public async Task CrudAsync()
42
57
// Should use default dimension for CRUD op because the mapping does not
43
58
// have dimensions specified.
44
59
object savedId ;
45
- using ( ISession s = OpenSession ( ) )
46
- using ( ITransaction t = s . BeginTransaction ( ) )
60
+ using ( var s = OpenSession ( ) )
61
+ using ( var t = s . BeginTransaction ( ) )
47
62
{
48
- savedId = await ( s . SaveAsync ( new MultiTypeEntity
49
- {
50
- StringProp = "a" ,
51
- StringClob = "a" ,
52
- BinaryBlob = new byte [ ] { 1 , 2 , 3 } ,
53
- Binary = new byte [ ] { 4 , 5 , 6 } ,
54
- Currency = 123.4m ,
55
- Double = 123.5d ,
56
- Decimal = 789.5m
57
- } ) ) ;
63
+ savedId = await ( s . SaveAsync (
64
+ new MultiTypeEntity
65
+ {
66
+ StringProp = "a" ,
67
+ StringClob = "a" ,
68
+ BinaryBlob = new byte [ ] { 1 , 2 , 3 } ,
69
+ Binary = new byte [ ] { 4 , 5 , 6 } ,
70
+ Currency = 123.4m ,
71
+ Double = 123.5d ,
72
+ Decimal = 789.5m ,
73
+ DecimalHighScale = 1234567890.0123456789m
74
+ } ) ) ;
58
75
await ( t . CommitAsync ( ) ) ;
59
76
}
60
77
61
- using ( ISession s = OpenSession ( ) )
62
- using ( ITransaction t = s . BeginTransaction ( ) )
78
+ using ( var s = OpenSession ( ) )
79
+ using ( var t = s . BeginTransaction ( ) )
63
80
{
64
81
var m = await ( s . GetAsync < MultiTypeEntity > ( savedId ) ) ;
82
+
83
+ Assert . That ( m . StringProp , Is . EqualTo ( "a" ) , "StringProp" ) ;
84
+ Assert . That ( m . StringClob , Is . EqualTo ( "a" ) , "StringClob" ) ;
85
+ Assert . That ( m . BinaryBlob , Is . EqualTo ( new byte [ ] { 1 , 2 , 3 } ) , "BinaryBlob" ) ;
86
+ Assert . That ( m . Binary , Is . EqualTo ( new byte [ ] { 4 , 5 , 6 } ) , "BinaryBlob" ) ;
87
+ Assert . That ( m . Currency , Is . EqualTo ( 123.4m ) , "Currency" ) ;
88
+ Assert . That ( m . Double , Is . EqualTo ( 123.5d ) . Within ( 0.0001d ) , "Double" ) ;
89
+ Assert . That ( m . Decimal , Is . EqualTo ( 789.5m ) , "Decimal" ) ;
90
+ Assert . That ( m . DecimalHighScale , Is . EqualTo ( 1234567890.0123456789m ) , "DecimalHighScale" ) ;
91
+
65
92
m . StringProp = "b" ;
66
93
m . StringClob = "b" ;
67
- m . BinaryBlob = new byte [ ] { 4 , 5 , 6 } ;
68
- m . Binary = new byte [ ] { 7 , 8 , 9 } ;
94
+ m . BinaryBlob = new byte [ ] { 4 , 5 , 6 } ;
95
+ m . Binary = new byte [ ] { 7 , 8 , 9 } ;
69
96
m . Currency = 456.78m ;
70
97
m . Double = 987.6d ;
71
98
m . Decimal = 1323456.45m ;
99
+ m . DecimalHighScale = 9876543210.0123456789m ;
72
100
await ( t . CommitAsync ( ) ) ;
73
101
}
74
102
75
- using ( ISession s = OpenSession ( ) )
76
- using ( ITransaction t = s . BeginTransaction ( ) )
103
+ using ( var s = OpenSession ( ) )
104
+ using ( var t = s . BeginTransaction ( ) )
77
105
{
78
- await ( s . CreateQuery ( "delete from MultiTypeEntity" ) . ExecuteUpdateAsync ( ) ) ;
106
+ var m = await ( s . LoadAsync < MultiTypeEntity > ( savedId ) ) ;
107
+
108
+ Assert . That ( m . StringProp , Is . EqualTo ( "b" ) , "StringProp" ) ;
109
+ Assert . That ( m . StringClob , Is . EqualTo ( "b" ) , "StringClob" ) ;
110
+ Assert . That ( m . BinaryBlob , Is . EqualTo ( new byte [ ] { 4 , 5 , 6 } ) , "BinaryBlob" ) ;
111
+ Assert . That ( m . Binary , Is . EqualTo ( new byte [ ] { 7 , 8 , 9 } ) , "BinaryBlob" ) ;
112
+ Assert . That ( m . Currency , Is . EqualTo ( 456.78m ) , "Currency" ) ;
113
+ Assert . That ( m . Double , Is . EqualTo ( 987.6d ) . Within ( 0.0001d ) , "Double" ) ;
114
+ Assert . That ( m . Decimal , Is . EqualTo ( 1323456.45m ) , "Decimal" ) ;
115
+ Assert . That ( m . DecimalHighScale , Is . EqualTo ( 9876543210.0123456789m ) , "DecimalHighScale" ) ;
116
+
79
117
await ( t . CommitAsync ( ) ) ;
80
118
}
81
119
}
82
120
83
121
[ Test ]
84
122
public async Task QueryPlansAreReusedAsync ( )
85
123
{
86
- if ( ! ( Sfi . ConnectionProvider . Driver is SqlClientDriver ) )
87
- Assert . Ignore ( "Test designed for SqlClientDriver only" ) ;
88
-
89
124
using ( ISession s = OpenSession ( ) )
90
125
using ( ITransaction t = s . BeginTransaction ( ) )
91
126
{
@@ -102,19 +137,21 @@ public async Task QueryPlansAreReusedAsync()
102
137
var beforeCount = await ( countPlansCommand . UniqueResultAsync < int > ( ) ) ;
103
138
104
139
var insertCount = 10 ;
105
- for ( var i = 0 ; i < insertCount ; i ++ )
140
+ for ( var i = 0 ; i < insertCount ; i ++ )
106
141
{
107
142
await ( s . SaveAsync ( new MultiTypeEntity ( ) { StringProp = new string ( 'x' , i + 1 ) } ) ) ;
108
143
await ( s . FlushAsync ( ) ) ;
109
144
}
110
145
111
146
var afterCount = await ( countPlansCommand . UniqueResultAsync < int > ( ) ) ;
112
147
113
- Assert . That ( afterCount - beforeCount , Is . LessThan ( insertCount - 1 ) ,
114
- string . Format ( "Excessive query plans created: before={0} after={1}" , beforeCount , afterCount ) ) ;
148
+ Assert . That (
149
+ afterCount - beforeCount ,
150
+ Is . LessThan ( insertCount - 1 ) ,
151
+ $ "Excessive query plans created: before={ beforeCount } after={ afterCount } ") ;
115
152
116
153
await ( t . RollbackAsync ( ) ) ;
117
154
}
118
155
}
119
156
}
120
- }
157
+ }
0 commit comments