diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH3530/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH3530/Fixture.cs index bd6741976d..a01a13af6d 100644 --- a/src/NHibernate.Test/Async/NHSpecificTest/GH3530/Fixture.cs +++ b/src/NHibernate.Test/Async/NHSpecificTest/GH3530/Fixture.cs @@ -19,6 +19,7 @@ namespace NHibernate.Test.NHSpecificTest.GH3530 { using System.Threading.Tasks; + using System.Threading; [TestFixture] public class FixtureAsync : BugTestCase { @@ -117,12 +118,10 @@ private string GetQualifiedName(string catalog, string schema, string name) return Dialect.Qualify(catalog, schema, name); } - [TestCaseSource(nameof(GetTestCases))] - public async Task TestLocalesAsync(CultureInfo from, CultureInfo to) + [Test, TestCaseSource(nameof(GetTestCases))] + public async Task TestDateTimeAsync(CultureInfo from, CultureInfo to) { DateTime leapDay = new DateTime(2024, 2, 29, new GregorianCalendar(GregorianCalendarTypes.USEnglish)); - double doubleValue = 12.3f; - int intValue = 4; object id; CurrentCulture = from; @@ -131,9 +130,7 @@ public async Task TestLocalesAsync(CultureInfo from, CultureInfo to) { var entity = new LocaleEntity() { - DateTimeValue = leapDay, - DoubleValue = doubleValue, - IntegerValue = intValue, + DateTimeValue = leapDay }; id = await (session.SaveAsync(entity)); @@ -147,11 +144,95 @@ public async Task TestLocalesAsync(CultureInfo from, CultureInfo to) var entity = await (session.GetAsync(id)); Assert.AreEqual(leapDay, entity.DateTimeValue); - Assert.AreEqual(intValue, entity.IntegerValue); + } + } + + [Test, TestCaseSource(nameof(GetTestCases))] + public async Task TestDecimalAsync(CultureInfo from, CultureInfo to) + { + decimal decimalValue = 12.3m; + object id; + + CurrentCulture = from; + using (var session = OpenSession()) + using (var tx = session.BeginTransaction()) + { + var entity = new LocaleEntity() + { + DecimalValue = decimalValue + }; + + id = await (session.SaveAsync(entity)); + await (tx.CommitAsync()); + } + + CurrentCulture = to; + using (var session = OpenSession()) + using (var tx = session.BeginTransaction()) + { + var entity = await (session.GetAsync(id)); + + Assert.AreEqual(decimalValue, entity.DecimalValue); + } + } + + [Test, TestCaseSource(nameof(GetTestCases))] + public async Task TestDoubleAsync(CultureInfo from, CultureInfo to) + { + double doubleValue = 12.3d; + object id; + + CurrentCulture = from; + using (var session = OpenSession()) + using (var tx = session.BeginTransaction()) + { + var entity = new LocaleEntity() + { + DoubleValue = doubleValue + }; + + id = await (session.SaveAsync(entity)); + await (tx.CommitAsync()); + } + + CurrentCulture = to; + using (var session = OpenSession()) + using (var tx = session.BeginTransaction()) + { + var entity = await (session.GetAsync(id)); + Assert.True(doubleValue - entity.DoubleValue < double.Epsilon); } } + public async Task TestIntegerAsync(CultureInfo from, CultureInfo to, CancellationToken cancellationToken = default(CancellationToken)) + { + int integerValue = 123; + object id; + + CurrentCulture = from; + using (var session = OpenSession()) + using (var tx = session.BeginTransaction()) + { + var entity = new LocaleEntity() + { + IntegerValue = integerValue + }; + + id = await (session.SaveAsync(entity, cancellationToken)); + await (tx.CommitAsync(cancellationToken)); + } + + CurrentCulture = to; + using (var session = OpenSession()) + using (var tx = session.BeginTransaction()) + { + var entity = await (session.GetAsync(id, cancellationToken)); + + Assert.AreEqual(integerValue, entity.IntegerValue); + } + } + private CultureInfo CurrentCulture { get