1010
1111using System ;
1212using System . Collections ;
13+ using System . Data ;
1314using NHibernate . Dialect ;
1415using NHibernate . Driver ;
16+ using NHibernate . Engine ;
17+ using NHibernate . SqlTypes ;
1518using NUnit . Framework ;
19+ using Environment = NHibernate . Cfg . Environment ;
1620
1721namespace NHibernate . Test . DriverTest
1822{
@@ -21,19 +25,30 @@ namespace NHibernate.Test.DriverTest
2125 [ TestFixture ]
2226 public class SqlClientDriverFixtureAsync : TestCase
2327 {
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 )
2533 {
26- get { return "NHibernate.Test" ; }
34+ return dialect is MsSql2008Dialect ;
2735 }
2836
29- protected override IList Mappings
37+ protected override bool AppliesTo ( ISessionFactoryImplementor factory )
3038 {
31- get { return new [ ] { "DriverTest.MultiTypeEntity.hbm.xml" } ; }
39+ return factory . ConnectionProvider . Driver is SqlClientDriver ;
3240 }
3341
34- protected override bool AppliesTo ( Dialect . Dialect dialect )
42+ protected override void OnTearDown ( )
3543 {
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+ }
3752 }
3853
3954 [ Test ]
@@ -42,50 +57,70 @@ public async Task CrudAsync()
4257 // Should use default dimension for CRUD op because the mapping does not
4358 // have dimensions specified.
4459 object savedId ;
45- using ( ISession s = OpenSession ( ) )
46- using ( ITransaction t = s . BeginTransaction ( ) )
60+ using ( var s = OpenSession ( ) )
61+ using ( var t = s . BeginTransaction ( ) )
4762 {
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+ } ) ) ;
5875 await ( t . CommitAsync ( ) ) ;
5976 }
6077
61- using ( ISession s = OpenSession ( ) )
62- using ( ITransaction t = s . BeginTransaction ( ) )
78+ using ( var s = OpenSession ( ) )
79+ using ( var t = s . BeginTransaction ( ) )
6380 {
6481 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+
6592 m . StringProp = "b" ;
6693 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 } ;
6996 m . Currency = 456.78m ;
7097 m . Double = 987.6d ;
7198 m . Decimal = 1323456.45m ;
99+ m . DecimalHighScale = 9876543210.0123456789m ;
72100 await ( t . CommitAsync ( ) ) ;
73101 }
74102
75- using ( ISession s = OpenSession ( ) )
76- using ( ITransaction t = s . BeginTransaction ( ) )
103+ using ( var s = OpenSession ( ) )
104+ using ( var t = s . BeginTransaction ( ) )
77105 {
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+
79117 await ( t . CommitAsync ( ) ) ;
80118 }
81119 }
82120
83121 [ Test ]
84122 public async Task QueryPlansAreReusedAsync ( )
85123 {
86- if ( ! ( Sfi . ConnectionProvider . Driver is SqlClientDriver ) )
87- Assert . Ignore ( "Test designed for SqlClientDriver only" ) ;
88-
89124 using ( ISession s = OpenSession ( ) )
90125 using ( ITransaction t = s . BeginTransaction ( ) )
91126 {
@@ -102,19 +137,21 @@ public async Task QueryPlansAreReusedAsync()
102137 var beforeCount = await ( countPlansCommand . UniqueResultAsync < int > ( ) ) ;
103138
104139 var insertCount = 10 ;
105- for ( var i = 0 ; i < insertCount ; i ++ )
140+ for ( var i = 0 ; i < insertCount ; i ++ )
106141 {
107142 await ( s . SaveAsync ( new MultiTypeEntity ( ) { StringProp = new string ( 'x' , i + 1 ) } ) ) ;
108143 await ( s . FlushAsync ( ) ) ;
109144 }
110145
111146 var afterCount = await ( countPlansCommand . UniqueResultAsync < int > ( ) ) ;
112147
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 } ") ;
115152
116153 await ( t . RollbackAsync ( ) ) ;
117154 }
118155 }
119156 }
120- }
157+ }
0 commit comments