/src/NHibernate.Test/Async/NHSpecificTest/NH3961/DateParametersComparedTo.cs

https://github.com/RogerKratz/nhibernate-core · C# · 295 lines · 232 code · 37 blank · 26 comment · 14 complexity · 3091461b8dab19eb6035c475b26e198f MD5 · raw file

  1. //------------------------------------------------------------------------------
  2. // <auto-generated>
  3. // This code was generated by AsyncGenerator.
  4. //
  5. // Changes to this file may cause incorrect behavior and will be lost if
  6. // the code is regenerated.
  7. // </auto-generated>
  8. //------------------------------------------------------------------------------
  9. using System;
  10. using System.Globalization;
  11. using System.Linq;
  12. using NHibernate.Linq;
  13. using NUnit.Framework;
  14. namespace NHibernate.Test.NHSpecificTest.NH3961
  15. {
  16. using System.Threading.Tasks;
  17. [TestFixture]
  18. public class DateParametersComparedToAsync : BugTestCase
  19. {
  20. private DateTime _testDate;
  21. private CultureInfo _backupCulture;
  22. private CultureInfo _backupUICulture;
  23. private readonly CultureInfo _testCulture = CultureInfo.GetCultureInfo("fr-FR");
  24. protected override void OnSetUp()
  25. {
  26. using (ISession session = OpenSession())
  27. using (ITransaction transaction = session.BeginTransaction())
  28. {
  29. // day > 12 for ensuring a mdy/dmy mix-up would cause a failure.
  30. _testDate = new DateTime(2017, 03, 15);
  31. var e1 = new Entity { Name = "Bob", NullableDateTime = _testDate, NonNullableDateTime = _testDate };
  32. session.Save(e1);
  33. var e2 = new Entity { Name = "Sally", NullableDateTime = _testDate.AddDays(1), NonNullableDateTime = _testDate.AddDays(1) };
  34. session.Save(e2);
  35. session.Flush();
  36. transaction.Commit();
  37. }
  38. _backupCulture = CultureInfo.CurrentCulture;
  39. _backupUICulture = CultureInfo.CurrentUICulture;
  40. // "CultureInfo.CurrentCulture =": Fx 4.6 only; affect trough Thread.CurrentThread instead if in need of supporting a previous Fx.
  41. // This test needs a culture using a dmy date format. If the test system does not support fr-FR, try find another one...
  42. // This test assumes the SQL user language is set as English, otherwise it may not showcase the failure.
  43. CultureInfo.CurrentCulture = _testCulture;
  44. CultureInfo.CurrentUICulture = _testCulture;
  45. }
  46. protected override void OnTearDown()
  47. {
  48. using (ISession session = OpenSession())
  49. using (ITransaction transaction = session.BeginTransaction())
  50. {
  51. session.Delete("from System.Object");
  52. session.Flush();
  53. transaction.Commit();
  54. }
  55. CultureInfo.CurrentCulture = _backupCulture;
  56. CultureInfo.CurrentUICulture = _backupUICulture;
  57. }
  58. // Non-reg test case
  59. [Test]
  60. public async Task NonNullableMappedAsDateShouldBeCultureAgnosticAsync()
  61. {
  62. using (ISession session = OpenSession())
  63. using (session.BeginTransaction())
  64. {
  65. var result = await (session.Query<Entity>()
  66. .Where(e => e.NonNullableDateTime == _testDate.MappedAs(NHibernateUtil.Date))
  67. .ToListAsync());
  68. Assert.AreEqual(1, result.Count);
  69. Assert.AreEqual("Bob", result[0].Name);
  70. }
  71. }
  72. // Non-reg test case
  73. [Test]
  74. public async Task NonNullableMappedAsDateShouldIgnoreTimeAsync()
  75. {
  76. using (ISession session = OpenSession())
  77. {
  78. var result = await (session.Query<Entity>()
  79. .Where(e => e.NonNullableDateTime == _testDate.AddMinutes(10).MappedAs(NHibernateUtil.Date))
  80. .ToListAsync());
  81. Assert.AreEqual(1, result.Count);
  82. Assert.AreEqual("Bob", result[0].Name);
  83. }
  84. }
  85. // Non-reg test case
  86. [Test]
  87. public async Task NonNullableMappedAsDateTimeShouldBeCultureAgnosticAsync()
  88. {
  89. using (ISession session = OpenSession())
  90. using (session.BeginTransaction())
  91. {
  92. var result = await (session.Query<Entity>()
  93. .Where(e => e.NonNullableDateTime == _testDate.MappedAs(NHibernateUtil.DateTime))
  94. .ToListAsync());
  95. Assert.AreEqual(1, result.Count);
  96. Assert.AreEqual("Bob", result[0].Name);
  97. }
  98. }
  99. // Non-reg test case
  100. [Test]
  101. [Obsolete]
  102. public async Task NonNullableMappedAsTimestampShouldBeCultureAgnosticAsync()
  103. {
  104. using (ISession session = OpenSession())
  105. using (session.BeginTransaction())
  106. {
  107. var result = await (session.Query<Entity>()
  108. .Where(e => e.NonNullableDateTime == _testDate.MappedAs(NHibernateUtil.Timestamp))
  109. .ToListAsync());
  110. Assert.AreEqual(1, result.Count);
  111. Assert.AreEqual("Bob", result[0].Name);
  112. }
  113. }
  114. // Non-reg test case
  115. [Test]
  116. public async Task NonNullableParameterValueShouldNotBeCachedWithMappedAsAndAsync()
  117. {
  118. // Dodges the query parameter formatting bug for showcasing the parameter value bug
  119. CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
  120. CultureInfo.CurrentUICulture = CultureInfo.CurrentCulture;
  121. try
  122. {
  123. using (ISession session = OpenSession())
  124. {
  125. var result = await (session.Query<Entity>()
  126. .Where(e => e.NonNullableDateTime == _testDate.MappedAs(NHibernateUtil.DateTime))
  127. .ToListAsync());
  128. Assert.AreEqual(1, result.Count);
  129. Assert.AreEqual("Bob", result[0].Name);
  130. var testDate = _testDate.AddMinutes(10);
  131. result = await (session.Query<Entity>()
  132. .Where(e => e.NonNullableDateTime == testDate.MappedAs(NHibernateUtil.DateTime))
  133. .ToListAsync());
  134. CollectionAssert.IsEmpty(result);
  135. }
  136. }
  137. finally
  138. {
  139. CultureInfo.CurrentCulture = _testCulture;
  140. CultureInfo.CurrentUICulture = _testCulture;
  141. }
  142. }
  143. // Non-reg test case
  144. [Test]
  145. public async Task NonNullableShouldBeCultureAgnosticAsync()
  146. {
  147. using (ISession session = OpenSession())
  148. using (session.BeginTransaction())
  149. {
  150. var result = await (session.Query<Entity>()
  151. .Where(e => e.NonNullableDateTime == _testDate)
  152. .ToListAsync());
  153. Assert.AreEqual(1, result.Count);
  154. Assert.AreEqual("Bob", result[0].Name);
  155. }
  156. }
  157. // Failing test case till NH-3961 is fixed
  158. [Test]
  159. public async Task NullableMappedAsDateShouldBeCultureAgnosticAsync()
  160. {
  161. using (ISession session = OpenSession())
  162. using (session.BeginTransaction())
  163. {
  164. var result = await (session.Query<Entity>()
  165. .Where(e => e.NullableDateTime == _testDate.MappedAs(NHibernateUtil.Date))
  166. .ToListAsync());
  167. Assert.AreEqual(1, result.Count);
  168. Assert.AreEqual("Bob", result[0].Name);
  169. }
  170. }
  171. // Failing test case till NH-3961 is fixed
  172. [Test]
  173. public async Task NullableMappedAsDateShouldIgnoreTimeAsync()
  174. {
  175. var testDate = _testDate.AddMinutes(10);
  176. using (ISession session = OpenSession())
  177. {
  178. var result = await (session.Query<Entity>()
  179. .Where(e => e.NullableDateTime == testDate.MappedAs(NHibernateUtil.Date))
  180. .ToListAsync());
  181. Assert.AreEqual(1, result.Count);
  182. Assert.AreEqual("Bob", result[0].Name);
  183. }
  184. }
  185. // Failing test case till NH-3961 is fixed
  186. [Test]
  187. public async Task NullableMappedAsDateTimeShouldBeCultureAgnosticAsync()
  188. {
  189. using (ISession session = OpenSession())
  190. using (session.BeginTransaction())
  191. {
  192. var result = await (session.Query<Entity>()
  193. .Where(e => e.NullableDateTime == _testDate.MappedAs(NHibernateUtil.DateTime))
  194. .ToListAsync());
  195. Assert.AreEqual(1, result.Count);
  196. Assert.AreEqual("Bob", result[0].Name);
  197. }
  198. }
  199. // Failing test case till NH-3961 is fixed
  200. [Test]
  201. [Obsolete]
  202. public async Task NullableMappedAsTimestampShouldBeCultureAgnosticAsync()
  203. {
  204. using (ISession session = OpenSession())
  205. using (session.BeginTransaction())
  206. {
  207. var result = await (session.Query<Entity>()
  208. .Where(e => e.NullableDateTime == _testDate.MappedAs(NHibernateUtil.Timestamp))
  209. .ToListAsync());
  210. Assert.AreEqual(1, result.Count);
  211. Assert.AreEqual("Bob", result[0].Name);
  212. }
  213. }
  214. // Failing test case till NH-3961 is fixed
  215. [Test]
  216. public async Task NullableParameterValueShouldNotBeCachedWithMappedAsAsync()
  217. {
  218. // Dodges the query parameter formatting bug for showcasing the parameter value bug
  219. CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
  220. CultureInfo.CurrentUICulture = CultureInfo.CurrentCulture;
  221. try
  222. {
  223. using (ISession session = OpenSession())
  224. {
  225. var result = await (session.Query<Entity>()
  226. .Where(e => e.NullableDateTime == _testDate.MappedAs(NHibernateUtil.DateTime))
  227. .ToListAsync());
  228. Assert.AreEqual(1, result.Count);
  229. Assert.AreEqual("Bob", result[0].Name);
  230. var testDate = _testDate.AddMinutes(10);
  231. result = await (session.Query<Entity>()
  232. .Where(e => e.NullableDateTime == testDate.MappedAs(NHibernateUtil.DateTime))
  233. .ToListAsync());
  234. CollectionAssert.IsEmpty(result);
  235. }
  236. }
  237. finally
  238. {
  239. CultureInfo.CurrentCulture = _testCulture;
  240. CultureInfo.CurrentUICulture = _testCulture;
  241. }
  242. }
  243. // Non-reg test case
  244. [Test]
  245. public async Task NullableShouldBeCultureAgnosticAsync()
  246. {
  247. using (ISession session = OpenSession())
  248. using (session.BeginTransaction())
  249. {
  250. var result = await (session.Query<Entity>()
  251. .Where(e => e.NullableDateTime == _testDate)
  252. .ToListAsync());
  253. Assert.AreEqual(1, result.Count);
  254. Assert.AreEqual("Bob", result[0].Name);
  255. }
  256. }
  257. }
  258. }