PageRenderTime 71ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 1ms

/Tests/Linq/DataProvider/SqlServerFunctionsTests.cs

https://github.com/linq2db/linq2db
C# | 1452 lines | 1273 code | 178 blank | 1 comment | 6 complexity | 1816bfbfd80be1081ba191617739bcee MD5 | raw file
  1. using System;
  2. using System.Linq;
  3. using LinqToDB;
  4. using LinqToDB.Data;
  5. using LinqToDB.DataProvider.SqlServer;
  6. using LinqToDB.Tools;
  7. using LinqToDB.Tools.DataProvider.SqlServer.Schemas;
  8. using NUnit.Framework;
  9. namespace Tests.DataProvider
  10. {
  11. [TestFixture]
  12. public class SqlServerFunctionsTests : TestBase
  13. {
  14. #region Configuration
  15. [Test]
  16. public void DbTSTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  17. {
  18. using var db = new SystemDB(context);
  19. var result = db.Select(() => SqlFn.DbTS);
  20. Console.WriteLine(result.ToDiagnosticString());
  21. Assert.That(result.Length, Is.EqualTo(8));
  22. }
  23. [Test]
  24. public void LangIDTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  25. {
  26. using var db = new SystemDB(context);
  27. var result = db.Select(() => SqlFn.LangID);
  28. Console.WriteLine(result);
  29. Assert.That(result, Is.GreaterThanOrEqualTo(0));
  30. }
  31. [Test]
  32. public void LanguageTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  33. {
  34. using var db = new SystemDB(context);
  35. var result = db.Select(() => SqlFn.Language);
  36. Console.WriteLine(result);
  37. Assert.That(result, Is.Not.Null);
  38. }
  39. [Test]
  40. public void LockTimeoutTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  41. {
  42. using var db = new SystemDB(context);
  43. db.Execute("SET LOCK_TIMEOUT 1000");
  44. var result = db.Select(() => SqlFn.LockTimeout);
  45. Console.WriteLine(result);
  46. Assert.That(result, Is.EqualTo(1000));
  47. }
  48. [Test]
  49. public void MaxConnectionsTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  50. {
  51. using var db = new SystemDB(context);
  52. var result = db.Select(() => SqlFn.MaxConnections);
  53. Console.WriteLine(result);
  54. Assert.That(result, Is.EqualTo(32767));
  55. }
  56. [Test]
  57. public void MaxPrecisionTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  58. {
  59. using var db = new SystemDB(context);
  60. var result = db.Select(() => SqlFn.MaxPrecision);
  61. Console.WriteLine(result);
  62. Assert.That(result, Is.EqualTo(38));
  63. }
  64. [Test]
  65. public void NestLevelTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  66. {
  67. using var db = new SystemDB(context);
  68. var result = db.Select(() => SqlFn.NestLevel);
  69. Console.WriteLine(result);
  70. Assert.That(result, Is.EqualTo(0));
  71. }
  72. [Test]
  73. public void OptionsTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  74. {
  75. using var db = new SystemDB(context);
  76. var result = db.Select(() => SqlFn.Options);
  77. Console.WriteLine(result);
  78. Assert.That(result, Is.Not.EqualTo(0));
  79. }
  80. [Test]
  81. public void RemServerTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  82. {
  83. using var db = new SystemDB(context);
  84. var result = db.Select(() => SqlFn.RemServer);
  85. Console.WriteLine(result);
  86. Assert.That(result, Is.Null);
  87. }
  88. [Test]
  89. public void ServerNameTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  90. {
  91. using var db = new SystemDB(context);
  92. var result = db.Select(() => SqlFn.ServerName);
  93. Console.WriteLine(result);
  94. Assert.That(result, Is.Not.Null);
  95. }
  96. [Test]
  97. public void ServiceNameTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  98. {
  99. if (context == "SqlAzure")
  100. return;
  101. using var db = new SystemDB(context);
  102. var result = db.Select(() => SqlFn.ServiceName);
  103. Console.WriteLine(result);
  104. Assert.That(result, Is.Not.Null);
  105. }
  106. [Test]
  107. public void SpIDTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  108. {
  109. using var db = new SystemDB(context);
  110. var result = db.Select(() => SqlFn.SpID);
  111. Console.WriteLine(result);
  112. Assert.That(result, Is.Not.EqualTo(0));
  113. }
  114. [Test]
  115. public void TextSizeTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  116. {
  117. using var db = new SystemDB(context);
  118. db.Execute("SET TEXTSIZE 2048");
  119. var result = db.Select(() => SqlFn.TextSize);
  120. Console.WriteLine(result);
  121. Assert.That(result, Is.EqualTo(2048));
  122. }
  123. [Test]
  124. public void VersionTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  125. {
  126. using var db = new SystemDB(context);
  127. var result = db.Select(() => SqlFn.Version);
  128. Console.WriteLine(result);
  129. Assert.That(result, Is.Not.Null);
  130. }
  131. #endregion
  132. #region Conversion
  133. [Test]
  134. public void CastTest1([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  135. {
  136. using var db = new SystemDB(context);
  137. var result = db.Select(() => SqlFn.Cast("10:10:10", SqlType.Time));
  138. Console.WriteLine(result);
  139. Assert.That(result, Is.EqualTo(new TimeSpan(10, 10, 10)));
  140. }
  141. [Test]
  142. public void CastTest2([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  143. {
  144. using var db = new SystemDB(context);
  145. var result = db.Select(() => SqlFn.Cast("10:10:10", SqlType.Time(3)));
  146. Console.WriteLine(result);
  147. Assert.That(result, Is.EqualTo(new TimeSpan(10, 10, 10)));
  148. }
  149. [Test]
  150. public void CastTest3([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  151. {
  152. using var db = new SystemDB(context);
  153. var result = db.Select(() => SqlFn.Cast<string>(123));
  154. Console.WriteLine(result);
  155. Assert.That(result, Is.EqualTo("123"));
  156. }
  157. [Test]
  158. public void ConvertTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  159. {
  160. using var db = new SystemDB(context);
  161. var result = db.Select(() => SqlFn.Convert(SqlType.VarChar(4), 123));
  162. Console.WriteLine(result);
  163. Assert.That(result, Is.EqualTo("123"));
  164. }
  165. [Test]
  166. public void ConvertTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  167. {
  168. using var db = new SystemDB(context);
  169. var result = db.Select(() => SqlFn.Convert(SqlType.Decimal, 123));
  170. Console.WriteLine(result);
  171. Assert.That(result, Is.EqualTo(123m));
  172. }
  173. [Test]
  174. public void ConvertTest3([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  175. {
  176. using var db = new SystemDB(context);
  177. var result = db.Select(() => SqlFn.Convert(SqlType.NVarChar(10), 123));
  178. Console.WriteLine(result);
  179. Assert.That(result, Is.EqualTo("123"));
  180. }
  181. [Test]
  182. public void ConvertTest4([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  183. {
  184. using var db = new SystemDB(context);
  185. var result = db.Select(() => SqlFn.Convert(SqlType.VarCharMax, 123));
  186. Console.WriteLine(result);
  187. Assert.That(result, Is.EqualTo("123"));
  188. }
  189. [Test]
  190. public void ConvertTest5([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  191. {
  192. using var db = new SystemDB(context);
  193. var result = db.Select(() => SqlFn.Convert(SqlType.Decimal(30, 0), 123));
  194. Console.WriteLine(result);
  195. Assert.That(result, Is.EqualTo(123m));
  196. }
  197. [Test]
  198. public void ConvertTest6([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  199. {
  200. using var db = new SystemDB(context);
  201. var result = db.Select(() => SqlFn.Convert<string>(123));
  202. Console.WriteLine(result);
  203. Assert.That(result, Is.EqualTo("123"));
  204. }
  205. [Test]
  206. public void ConvertWithStyleTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  207. {
  208. using var db = new SystemDB(context);
  209. var result = db.Select(() => SqlFn.Convert(SqlType.VarChar(4), 123, 1));
  210. Console.WriteLine(result);
  211. Assert.That(result, Is.EqualTo("123"));
  212. }
  213. [Test]
  214. public void ConvertWithStyleTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  215. {
  216. using var db = new SystemDB(context);
  217. var result = db.Select(() => SqlFn.Convert(SqlType.Decimal, 123, 1));
  218. Console.WriteLine(result);
  219. Assert.That(result, Is.EqualTo(123m));
  220. }
  221. [Test]
  222. public void ConvertWithStyleTest3([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  223. {
  224. using var db = new SystemDB(context);
  225. var result = db.Select(() => SqlFn.Convert(SqlType.NVarChar(10), new DateTime(2022, 02, 22), 105));
  226. Console.WriteLine(result);
  227. Assert.That(result, Is.EqualTo("22-02-2022"));
  228. }
  229. [Test]
  230. public void ConvertWithStyleTest4([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  231. {
  232. using var db = new SystemDB(context);
  233. var result = db.Select(() => SqlFn.Convert(SqlType.VarCharMax, 123, 1));
  234. Console.WriteLine(result);
  235. Assert.That(result, Is.EqualTo("123"));
  236. }
  237. [Test]
  238. public void ConvertWithStyleTest5([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  239. {
  240. using var db = new SystemDB(context);
  241. var result = db.Select(() => SqlFn.Convert(SqlType.Decimal(30, 0), 123, 1));
  242. Console.WriteLine(result);
  243. Assert.That(result, Is.EqualTo(123m));
  244. }
  245. [Test]
  246. public void ConvertWithStyleTest6([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  247. {
  248. using var db = new SystemDB(context);
  249. var result = db.Select(() => SqlFn.Convert<string>(new DateTime(2022, 02, 22), 5));
  250. Console.WriteLine(result);
  251. Assert.That(result, Is.EqualTo("22-02-22"));
  252. }
  253. [Test]
  254. public void ParseTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  255. {
  256. using var db = new SystemDB(context);
  257. var result = db.Select(() => SqlFn.Parse("Monday, 13 December 2010", SqlType.Date));
  258. Console.WriteLine(result);
  259. Assert.That(result, Is.EqualTo(new DateTime(2010, 12, 13)));
  260. }
  261. [Test]
  262. public void ParseTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  263. {
  264. using var db = new SystemDB(context);
  265. var result = db.Select(() => SqlFn.Parse("123", SqlType.Decimal(30)));
  266. Console.WriteLine(result);
  267. Assert.That(result, Is.EqualTo(123m));
  268. }
  269. [Test]
  270. public void ParseTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  271. {
  272. using var db = new SystemDB(context);
  273. var result = db.Select(() => SqlFn.Parse<int>("123"));
  274. Console.WriteLine(result);
  275. Assert.That(result, Is.EqualTo(123));
  276. }
  277. [Test]
  278. public void ParseWithCultureTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  279. {
  280. using var db = new SystemDB(context);
  281. var result = db.Select(() => SqlFn.Parse("€345,98", SqlType.Money, "de-DE"));
  282. Console.WriteLine(result);
  283. Assert.That(result, Is.EqualTo(345.98m));
  284. }
  285. [Test]
  286. public void ParseWithCultureTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  287. {
  288. using var db = new SystemDB(context);
  289. var result = db.Select(() => SqlFn.Parse("345,98", SqlType.Decimal(30,2), "de-DE"));
  290. Console.WriteLine(result);
  291. Assert.That(result, Is.EqualTo(345.98m));
  292. }
  293. [Test]
  294. public void ParseWithCultureTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  295. {
  296. using var db = new SystemDB(context);
  297. var result = db.Select(() => SqlFn.Parse<decimal>("345,98", "de-DE"));
  298. Console.WriteLine(result);
  299. Assert.That(result, Is.EqualTo(345.98m));
  300. }
  301. [Test]
  302. public void TryCastTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  303. {
  304. using var db = new SystemDB(context);
  305. var result = db.Select(() => SqlFn.TryCast("10:10:10", SqlType.Time));
  306. Console.WriteLine(result);
  307. Assert.That(result, Is.EqualTo(new TimeSpan(10, 10, 10)));
  308. }
  309. [Test]
  310. public void TryCastTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  311. {
  312. using var db = new SystemDB(context);
  313. var result = db.Select(() => SqlFn.TryCast("10:10:10", SqlType.Time(3)));
  314. Console.WriteLine(result);
  315. Assert.That(result, Is.EqualTo(new TimeSpan(10, 10, 10)));
  316. }
  317. [Test]
  318. public void TryCastTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  319. {
  320. using var db = new SystemDB(context);
  321. var result = db.Select(() => SqlFn.TryCast<string>(123));
  322. Console.WriteLine(result);
  323. Assert.That(result, Is.EqualTo("123"));
  324. }
  325. [Test]
  326. public void TryConvertTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  327. {
  328. using var db = new SystemDB(context);
  329. var result = db.Select(() => SqlFn.TryConvert(SqlType.VarChar(4), 123));
  330. Console.WriteLine(result);
  331. Assert.That(result, Is.EqualTo("123"));
  332. }
  333. [Test]
  334. public void TryConvertTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  335. {
  336. using var db = new SystemDB(context);
  337. var result = db.Select(() => SqlFn.TryConvert(SqlType.Decimal, 123));
  338. Console.WriteLine(result);
  339. Assert.That(result, Is.EqualTo(123m));
  340. }
  341. [Test]
  342. public void TryConvertTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  343. {
  344. using var db = new SystemDB(context);
  345. var result = db.Select(() => SqlFn.TryConvert(SqlType.NVarChar(10), 123));
  346. Console.WriteLine(result);
  347. Assert.That(result, Is.EqualTo("123"));
  348. }
  349. [Test]
  350. public void TryConvertTest4([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  351. {
  352. using var db = new SystemDB(context);
  353. var result = db.Select(() => SqlFn.TryConvert(SqlType.VarCharMax, 123));
  354. Console.WriteLine(result);
  355. Assert.That(result, Is.EqualTo("123"));
  356. }
  357. [Test]
  358. public void TryConvertTest5([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  359. {
  360. using var db = new SystemDB(context);
  361. var result = db.Select(() => SqlFn.TryConvert(SqlType.Decimal(30, 0), 123));
  362. Console.WriteLine(result);
  363. Assert.That(result, Is.EqualTo(123m));
  364. }
  365. [Test]
  366. public void TryConvertTest6([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  367. {
  368. using var db = new SystemDB(context);
  369. var result = db.Select(() => SqlFn.TryConvert<string>(123));
  370. Console.WriteLine(result);
  371. Assert.That(result, Is.EqualTo("123"));
  372. }
  373. [Test]
  374. public void TryConvertWithStyleTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  375. {
  376. using var db = new SystemDB(context);
  377. var result = db.Select(() => SqlFn.TryConvert(SqlType.VarChar(4), 123, 1));
  378. Console.WriteLine(result);
  379. Assert.That(result, Is.EqualTo("123"));
  380. }
  381. [Test]
  382. public void TryConvertWithStyleTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  383. {
  384. using var db = new SystemDB(context);
  385. var result = db.Select(() => SqlFn.TryConvert(SqlType.Decimal, 123, 1));
  386. Console.WriteLine(result);
  387. Assert.That(result, Is.EqualTo(123m));
  388. }
  389. [Test]
  390. public void TryConvertWithStyleTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  391. {
  392. using var db = new SystemDB(context);
  393. var result = db.Select(() => SqlFn.TryConvert(SqlType.NVarChar(10), new DateTime(2022, 02, 22), 105));
  394. Console.WriteLine(result);
  395. Assert.That(result, Is.EqualTo("22-02-2022"));
  396. }
  397. [Test]
  398. public void TryConvertWithStyleTest4([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  399. {
  400. using var db = new SystemDB(context);
  401. var result = db.Select(() => SqlFn.TryConvert(SqlType.VarCharMax, 123, 1));
  402. Console.WriteLine(result);
  403. Assert.That(result, Is.EqualTo("123"));
  404. }
  405. [Test]
  406. public void TryConvertWithStyleTest5([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  407. {
  408. using var db = new SystemDB(context);
  409. var result = db.Select(() => SqlFn.TryConvert(SqlType.Decimal(30, 0), 123, 1));
  410. Console.WriteLine(result);
  411. Assert.That(result, Is.EqualTo(123m));
  412. }
  413. [Test]
  414. public void TryConvertWithStyleTest6([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  415. {
  416. using var db = new SystemDB(context);
  417. var result = db.Select(() => SqlFn.TryConvert<string>(new DateTime(2022, 02, 22), 5));
  418. Console.WriteLine(result);
  419. Assert.That(result, Is.EqualTo("22-02-22"));
  420. }
  421. [Test]
  422. public void TryParseTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  423. {
  424. using var db = new SystemDB(context);
  425. var result = db.Select(() => SqlFn.TryParse("Monday, 13 December 2010", SqlType.Date));
  426. Console.WriteLine(result);
  427. Assert.That(result, Is.EqualTo(new DateTime(2010, 12, 13)));
  428. }
  429. [Test]
  430. public void TryParseTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  431. {
  432. using var db = new SystemDB(context);
  433. var result = db.Select(() => SqlFn.TryParse("123", SqlType.Decimal(30)));
  434. Console.WriteLine(result);
  435. Assert.That(result, Is.EqualTo(123m));
  436. }
  437. [Test]
  438. public void TryParseTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  439. {
  440. using var db = new SystemDB(context);
  441. var result = db.Select(() => SqlFn.TryParse<int>("123"));
  442. Console.WriteLine(result);
  443. Assert.That(result, Is.EqualTo(123));
  444. }
  445. [Test]
  446. public void TryParseWithCultureTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  447. {
  448. using var db = new SystemDB(context);
  449. var result = db.Select(() => SqlFn.TryParse("€345,98", SqlType.Money, "de-DE"));
  450. Console.WriteLine(result);
  451. Assert.That(result, Is.EqualTo(345.98m));
  452. }
  453. [Test]
  454. public void TryParseWithCultureTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  455. {
  456. using var db = new SystemDB(context);
  457. var result = db.Select(() => SqlFn.TryParse("345,98", SqlType.Decimal(30,2), "de-DE"));
  458. Console.WriteLine(result);
  459. Assert.That(result, Is.EqualTo(345.98m));
  460. }
  461. [Test]
  462. public void TryParseWithCultureTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  463. {
  464. using var db = new SystemDB(context);
  465. var result = db.Select(() => SqlFn.TryParse<decimal>("345,98", "de-DE"));
  466. Console.WriteLine(result);
  467. Assert.That(result, Is.EqualTo(345.98m));
  468. }
  469. #endregion
  470. #region Data type
  471. [Test]
  472. public void DataLengthTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  473. {
  474. using var db = new SystemDB(context);
  475. var result = db.Select(() => SqlFn.DataLength("123"));
  476. Console.WriteLine(result);
  477. Assert.That(result, Is.EqualTo(6));
  478. }
  479. [Test]
  480. public void DataLengthLTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  481. {
  482. using var db = new SystemDB(context);
  483. var result = db.Select(() => SqlFn.DataLengthBig("123"));
  484. Console.WriteLine(result);
  485. Assert.That(result, Is.EqualTo(6));
  486. }
  487. [Test]
  488. public void IdentityCurrentTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  489. {
  490. using var db = new SystemDB(context);
  491. var result = db.Select(() => SqlFn.IdentityCurrent("Person"));
  492. Console.WriteLine(result);
  493. Assert.That(result, Is.GreaterThanOrEqualTo(0m));
  494. }
  495. [Test]
  496. public void IdentityIncrementTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  497. {
  498. using var db = new SystemDB(context);
  499. var result = db.Select(() => SqlFn.IdentityIncrement("Person"));
  500. Console.WriteLine(result);
  501. Assert.That(result, Is.EqualTo(1m));
  502. }
  503. [Test]
  504. public void IdentitySeedTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  505. {
  506. using var db = new SystemDB(context);
  507. var result = db.Select(() => SqlFn.IdentitySeed("Person"));
  508. Console.WriteLine(result);
  509. Assert.That(result, Is.EqualTo(1m));
  510. }
  511. #endregion
  512. #region Date and Time
  513. [Test]
  514. public void DateFirstTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  515. {
  516. using var db = new SystemDB(context);
  517. var result = db.Select(() => SqlFn.DateFirst);
  518. Console.WriteLine(result);
  519. Assert.That(result, Is.GreaterThan(0));
  520. }
  521. [Test]
  522. public void CurrentTimestampTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  523. {
  524. using var db = new SystemDB(context);
  525. var result = db.Select(() => SqlFn.CurrentTimestamp);
  526. Console.WriteLine(result);
  527. Assert.That(result.Year, Is.EqualTo(DateTime.Today.Year));
  528. }
  529. [Test]
  530. public void CurrentTimezoneTest([IncludeDataSources(TestProvName.AllSqlServer2019Plus)] string context)
  531. {
  532. using var db = new SystemDB(context);
  533. var result = db.Select(() => SqlFn.CurrentTimezone());
  534. Console.WriteLine(result);
  535. Assert.That(result, Is.Not.Null);
  536. }
  537. [Test]
  538. public void CurrentTimezoneIDTest([IncludeDataSources(TestProvName.SqlAzure)] string context)
  539. {
  540. using var db = new SystemDB(context);
  541. var result = db.Select(() => SqlFn.CurrentTimezoneID());
  542. Console.WriteLine(result);
  543. Assert.That(result, Is.Not.Null);
  544. }
  545. [Test]
  546. public void DateAddTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  547. {
  548. using var db = new SystemDB(context);
  549. var result = db.Select(() => SqlFn.DateAdd(SqlFn.DateParts.Month, -1, "2022-02-22"));
  550. Console.WriteLine(result);
  551. Assert.That(result, Is.EqualTo(new DateTime(2022, 01, 22)));
  552. }
  553. [Test]
  554. public void DateAddTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  555. {
  556. using var db = new SystemDB(context);
  557. var result = db.Select(() => SqlFn.DateAdd(SqlFn.DateParts.Day, 1, TestData.Date));
  558. Console.WriteLine(result);
  559. Assert.That(result, Is.EqualTo(TestData.Date.AddDays(1)));
  560. }
  561. [Test]
  562. public void DateAddTest3([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  563. {
  564. using var db = new SystemDB(context);
  565. var result = db.Select(() => SqlFn.DateAdd(SqlFn.DateParts.Year, 1, TestData.DateTimeOffset));
  566. Console.WriteLine(result);
  567. Assert.That(result?.Date, Is.EqualTo(TestData.DateTimeOffset.Date.AddYears(1)));
  568. }
  569. [Test]
  570. public void DateAddTest4([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  571. {
  572. using var db = new SystemDB(context);
  573. var result = db.Select(() => SqlFn.DateAdd(SqlFn.DateParts.Hour, 1, TimeSpan.FromHours(2)));
  574. Console.WriteLine(result);
  575. Assert.That(result, Is.EqualTo(new TimeSpan(3, 0, 0)));
  576. }
  577. [Test]
  578. public void DateDiffTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  579. {
  580. using var db = new SystemDB(context);
  581. var result = db.Select(() => SqlFn.DateDiff(SqlFn.DateParts.Day, "2022-02-22", "2022-02-24"));
  582. Console.WriteLine(result);
  583. Assert.That(result, Is.EqualTo(2));
  584. }
  585. [Test]
  586. public void DateDiffTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  587. {
  588. using var db = new SystemDB(context);
  589. var result = db.Select(() => SqlFn.DateDiff(SqlFn.DateParts.Month, TestData.Date, TestData.Date.AddYears(1)));
  590. Console.WriteLine(result);
  591. Assert.That(result, Is.EqualTo(12));
  592. }
  593. [Test]
  594. public void DateDiffTest3([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  595. {
  596. using var db = new SystemDB(context);
  597. var result = db.Select(() => SqlFn.DateDiff(SqlFn.DateParts.Month, TestData.DateTimeOffset, TestData.DateTimeOffset.AddYears(1)));
  598. Console.WriteLine(result);
  599. Assert.That(result, Is.EqualTo(12));
  600. }
  601. [Test]
  602. public void DateDiffTest4([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  603. {
  604. using var db = new SystemDB(context);
  605. var result = db.Select(() => SqlFn.DateDiff(SqlFn.DateParts.Hour, TimeSpan.FromHours(2), TimeSpan.FromHours(3)));
  606. Console.WriteLine(result);
  607. Assert.That(result, Is.EqualTo(1));
  608. }
  609. [Test]
  610. public void DateDiffBigTest1([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  611. {
  612. using var db = new SystemDB(context);
  613. var result = db.Select(() => SqlFn.DateDiffBig(SqlFn.DateParts.Day, "2022-02-22", "2022-02-24"));
  614. Console.WriteLine(result);
  615. Assert.That(result, Is.EqualTo(2));
  616. }
  617. [Test]
  618. public void DateDiffBigTest2([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  619. {
  620. using var db = new SystemDB(context);
  621. var result = db.Select(() => SqlFn.DateDiffBig(SqlFn.DateParts.Month, TestData.Date, TestData.Date.AddYears(1)));
  622. Console.WriteLine(result);
  623. Assert.That(result, Is.EqualTo(12));
  624. }
  625. [Test]
  626. public void DateDiffBigTest3([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  627. {
  628. using var db = new SystemDB(context);
  629. var result = db.Select(() => SqlFn.DateDiffBig(SqlFn.DateParts.Month, TestData.DateTimeOffset, TestData.DateTimeOffset.AddYears(1)));
  630. Console.WriteLine(result);
  631. Assert.That(result, Is.EqualTo(12));
  632. }
  633. [Test]
  634. public void DateDiffBigTest4([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  635. {
  636. using var db = new SystemDB(context);
  637. var result = db.Select(() => SqlFn.DateDiffBig(SqlFn.DateParts.Hour, TimeSpan.FromHours(2), TimeSpan.FromHours(3)));
  638. Console.WriteLine(result);
  639. Assert.That(result, Is.EqualTo(1));
  640. }
  641. [Test]
  642. public void TimeFromPartsTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  643. {
  644. using var db = new SystemDB(context);
  645. var result = db.Select(() => SqlFn.TimeFromParts(1, 1, 1, 0, 0));
  646. Console.WriteLine(result);
  647. Assert.That(result, Is.EqualTo(new TimeSpan(1, 1, 1)));
  648. }
  649. [Test]
  650. public void TimeFromPartsTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  651. {
  652. using var db = new SystemDB(context);
  653. var result = db.Select(() => SqlFn.TimeFromParts(1, 1, 1));
  654. Console.WriteLine(result);
  655. Assert.That(result, Is.EqualTo(new TimeSpan(1, 1, 1)));
  656. }
  657. [Test]
  658. public void DateFromPartsTest([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  659. {
  660. using var db = new SystemDB(context);
  661. var result = db.Select(() => SqlFn.DateFromParts(2022, 2, 22));
  662. Console.WriteLine(result);
  663. Assert.That(result, Is.EqualTo(new DateTime(2022, 2, 22)));
  664. }
  665. [Test]
  666. public void SmallDateTimeFromPartsTest([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  667. {
  668. using var db = new SystemDB(context);
  669. var result = db.Select(() => SqlFn.SmallDateTimeFromParts(2022, 2, 22, 0, 0));
  670. Console.WriteLine(result);
  671. Assert.That(result, Is.EqualTo(new DateTime(2022, 2, 22)));
  672. }
  673. [Test]
  674. public void DateTimeFromPartsTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  675. {
  676. using var db = new SystemDB(context);
  677. var result = db.Select(() => SqlFn.DateTimeFromParts(2022, 2, 22, 0, 0, 0, 0));
  678. Console.WriteLine(result);
  679. Assert.That(result, Is.EqualTo(new DateTime(2022, 2, 22)));
  680. }
  681. [Test]
  682. public void DateTimeFromPartsTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  683. {
  684. using var db = new SystemDB(context);
  685. var result = db.Select(() => SqlFn.DateTimeFromParts(2022, 2, 22, 0, 0, 0));
  686. Console.WriteLine(result);
  687. Assert.That(result, Is.EqualTo(new DateTime(2022, 2, 22)));
  688. }
  689. [Test]
  690. public void DateTimeFromPartsTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  691. {
  692. using var db = new SystemDB(context);
  693. var result = db.Select(() => SqlFn.DateTimeFromParts(2022, 2, 22));
  694. Console.WriteLine(result);
  695. Assert.That(result, Is.EqualTo(new DateTime(2022, 2, 22)));
  696. }
  697. [Test]
  698. public void DateTime2FromPartsTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  699. {
  700. using var db = new SystemDB(context);
  701. var result = db.Select(() => SqlFn.DateTime2FromParts(2022, 2, 22, 0, 0, 0, 0, 0));
  702. Console.WriteLine(result);
  703. Assert.That(result, Is.EqualTo(new DateTime(2022, 2, 22)));
  704. }
  705. [Test]
  706. public void DateTime2FromPartsTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  707. {
  708. using var db = new SystemDB(context);
  709. var result = db.Select(() => SqlFn.DateTime2FromParts(2022, 2, 22, 0, 0, 0));
  710. Console.WriteLine(result);
  711. Assert.That(result, Is.EqualTo(new DateTime(2022, 2, 22)));
  712. }
  713. [Test]
  714. public void DateTime2FromPartsTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  715. {
  716. using var db = new SystemDB(context);
  717. var result = db.Select(() => SqlFn.DateTime2FromParts(2022, 2, 22));
  718. Console.WriteLine(result);
  719. Assert.That(result, Is.EqualTo(new DateTime(2022, 2, 22)));
  720. }
  721. [Test]
  722. public void DateTimeOffsetFromPartsTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  723. {
  724. using var db = new SystemDB(context);
  725. var result = db.Select(() => SqlFn.DateTimeOffsetFromParts(2022, 2, 22, 0, 0, 0, 0, 0, 0, 0));
  726. Console.WriteLine(result);
  727. Assert.That(result, Is.EqualTo(new DateTimeOffset(new DateTime(2022, 2, 22), TimeSpan.Zero)));
  728. }
  729. [Test]
  730. public void DateTimeOffsetFromPartsTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  731. {
  732. using var db = new SystemDB(context);
  733. var result = db.Select(() => SqlFn.DateTimeOffsetFromParts(2022, 2, 22, 0, 0, 0));
  734. Console.WriteLine(result);
  735. Assert.That(result, Is.EqualTo(new DateTimeOffset(new DateTime(2022, 2, 22), TimeSpan.Zero)));
  736. }
  737. [Test]
  738. public void DateTimeOffsetFromPartsTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  739. {
  740. using var db = new SystemDB(context);
  741. var result = db.Select(() => SqlFn.DateTimeOffsetFromParts(2022, 2, 22));
  742. Console.WriteLine(result);
  743. Assert.That(result, Is.EqualTo(new DateTimeOffset(new DateTime(2022, 2, 22), TimeSpan.Zero)));
  744. }
  745. [Test]
  746. public void DateNameTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  747. {
  748. using var db = new SystemDB(context);
  749. var result = db.Select(() => SqlFn.DateName(SqlFn.DateParts.Day, "2022-02-24"));
  750. Console.WriteLine(result);
  751. Assert.That(result, Is.EqualTo("24"));
  752. }
  753. [Test]
  754. public void DateNameTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  755. {
  756. using var db = new SystemDB(context);
  757. var result = db.Select(() => SqlFn.DateName(SqlFn.DateParts.Month, new DateTime(2022, 03, 22)));
  758. Console.WriteLine(result);
  759. Assert.That(result, Is.EqualTo("March"));
  760. }
  761. [Test]
  762. public void DateNameTest3([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  763. {
  764. using var db = new SystemDB(context);
  765. var result = db.Select(() => SqlFn.DateName(SqlFn.DateParts.Month, new DateTimeOffset(new DateTime(2022, 03, 22), TimeSpan.Zero)));
  766. Console.WriteLine(result);
  767. Assert.That(result, Is.EqualTo("March"));
  768. }
  769. [Test]
  770. public void DateNameTest4([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  771. {
  772. using var db = new SystemDB(context);
  773. var result = db.Select(() => SqlFn.DateName(SqlFn.DateParts.Hour, TimeSpan.FromHours(2)));
  774. Console.WriteLine(result);
  775. Assert.That(result, Is.EqualTo("2"));
  776. }
  777. [Test]
  778. public void DatePartTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  779. {
  780. using var db = new SystemDB(context);
  781. var result = db.Select(() => SqlFn.DatePart(SqlFn.DateParts.Day, "2022-02-24"));
  782. Console.WriteLine(result);
  783. Assert.That(result, Is.EqualTo(24));
  784. }
  785. [Test]
  786. public void DatePartTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  787. {
  788. using var db = new SystemDB(context);
  789. var result = db.Select(() => SqlFn.DatePart(SqlFn.DateParts.Month, new DateTime(2022, 02, 22)));
  790. Console.WriteLine(result);
  791. Assert.That(result, Is.EqualTo(2));
  792. }
  793. [Test]
  794. public void DatePartTest3([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  795. {
  796. using var db = new SystemDB(context);
  797. var result = db.Select(() => SqlFn.DatePart(SqlFn.DateParts.Month, new DateTimeOffset(new DateTime(2022, 02, 22), TimeSpan.Zero)));
  798. Console.WriteLine(result);
  799. Assert.That(result, Is.EqualTo(2));
  800. }
  801. [Test]
  802. public void DatePartTest4([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  803. {
  804. using var db = new SystemDB(context);
  805. var result = db.Select(() => SqlFn.DatePart(SqlFn.DateParts.Hour, TimeSpan.FromHours(2)));
  806. Console.WriteLine(result);
  807. Assert.That(result, Is.EqualTo(2));
  808. }
  809. [Test]
  810. public void DayTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  811. {
  812. using var db = new SystemDB(context);
  813. var result = db.Select(() => SqlFn.Day("2022-02-24"));
  814. Console.WriteLine(result);
  815. Assert.That(result, Is.EqualTo(24));
  816. }
  817. [Test]
  818. public void DayTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  819. {
  820. using var db = new SystemDB(context);
  821. var result = db.Select(() => SqlFn.Day(new DateTime(2022, 02, 22)));
  822. Console.WriteLine(result);
  823. Assert.That(result, Is.EqualTo(22));
  824. }
  825. [Test]
  826. public void DayTest3([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  827. {
  828. using var db = new SystemDB(context);
  829. var result = db.Select(() => SqlFn.Day(new DateTimeOffset(new DateTime(2022, 02, 22), TimeSpan.Zero)));
  830. Console.WriteLine(result);
  831. Assert.That(result, Is.EqualTo(22));
  832. }
  833. [Test]
  834. public void EndOfMonthTest1([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  835. {
  836. using var db = new SystemDB(context);
  837. var result = db.Select(() => SqlFn.EndOfMonth("2022-02-24"));
  838. Console.WriteLine(result);
  839. Assert.That(result?.Day, Is.EqualTo(28));
  840. }
  841. [Test]
  842. public void EndOfMonthTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  843. {
  844. using var db = new SystemDB(context);
  845. var result = db.Select(() => SqlFn.EndOfMonth("2022-02-24", 1));
  846. Console.WriteLine(result);
  847. Assert.That(result?.Day, Is.EqualTo(31));
  848. }
  849. [Test]
  850. public void EndOfMonthTest21([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  851. {
  852. using var db = new SystemDB(context);
  853. var date = "2022-02-24";
  854. var result = db.Select(() => SqlFn.EndOfMonth(date, 1));
  855. Console.WriteLine(result);
  856. Assert.That(result?.Day, Is.EqualTo(31));
  857. }
  858. [Test]
  859. public void EndOfMonthTest3([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  860. {
  861. using var db = new SystemDB(context);
  862. var result = db.Select(() => SqlFn.EndOfMonth(new DateTime(2022, 02, 22)));
  863. Console.WriteLine(result);
  864. Assert.That(result?.Day, Is.EqualTo(28));
  865. }
  866. [Test]
  867. public void EndOfMonthTest4([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  868. {
  869. using var db = new SystemDB(context);
  870. var result = db.Select(() => SqlFn.EndOfMonth(new DateTime(2022, 02, 22), 1));
  871. Console.WriteLine(result);
  872. Assert.That(result?.Day, Is.EqualTo(31));
  873. }
  874. [Test]
  875. public void GetDateTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  876. {
  877. using var db = new SystemDB(context);
  878. var result = db.Select(() => SqlFn.GetDate());
  879. Console.WriteLine(result);
  880. Assert.That(result.Year, Is.EqualTo(DateTime.Today.Year));
  881. }
  882. [Test]
  883. public void GetUtcDateTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  884. {
  885. using var db = new SystemDB(context);
  886. var result = db.Select(() => SqlFn.GetUtcDate());
  887. Console.WriteLine(result);
  888. Assert.That(result.Year, Is.EqualTo(DateTime.UtcNow.Year));
  889. }
  890. [Test]
  891. public void SysDatetimeTest([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  892. {
  893. using var db = new SystemDB(context);
  894. var result = db.Select(() => SqlFn.SysDatetime());
  895. Console.WriteLine(result);
  896. Assert.That(result.Year, Is.EqualTo(DateTime.Now.Year));
  897. }
  898. [Test]
  899. public void SysDatetimeOffsetTest([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  900. {
  901. using var db = new SystemDB(context);
  902. var result = db.Select(() => SqlFn.SysDatetimeOffset());
  903. Console.WriteLine(result);
  904. Assert.That(result.Year, Is.EqualTo(DateTime.Now.Year));
  905. }
  906. [Test]
  907. public void SysUtcDatetimeTest([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  908. {
  909. using var db = new SystemDB(context);
  910. var result = db.Select(() => SqlFn.SysUtcDatetime());
  911. Console.WriteLine(result);
  912. Assert.That(result.Year, Is.EqualTo(DateTime.Now.Year));
  913. }
  914. [Test]
  915. public void IsDateTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  916. {
  917. using var db = new SystemDB(context);
  918. var result = db.Select(() => SqlFn.IsDate("2022-02-22"));
  919. Console.WriteLine(result);
  920. Assert.That(result, Is.EqualTo(1));
  921. }
  922. [Test]
  923. public void MonthTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  924. {
  925. using var db = new SystemDB(context);
  926. var date = "2022-02-24";
  927. var result = db.Select(() => SqlFn.Month(date));
  928. Console.WriteLine(result);
  929. Assert.That(result, Is.EqualTo(2));
  930. }
  931. [Test]
  932. public void MonthTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  933. {
  934. using var db = new SystemDB(context);
  935. var result = db.Select(() => SqlFn.Month(new DateTime(2022, 02, 22)));
  936. Console.WriteLine(result);
  937. Assert.That(result, Is.EqualTo(2));
  938. }
  939. [Test]
  940. public void MonthTest3([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  941. {
  942. using var db = new SystemDB(context);
  943. var result = db.Select(() => SqlFn.Month(new DateTimeOffset(new DateTime(2022, 02, 22), TimeSpan.Zero)));
  944. Console.WriteLine(result);
  945. Assert.That(result, Is.EqualTo(2));
  946. }
  947. [Test]
  948. public void SwitchOffsetTest([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  949. {
  950. using var db = new SystemDB(context);
  951. var result = db.Select(() => SqlFn.SwitchOffset(new DateTimeOffset(new DateTime(2022, 02, 22), TimeSpan.Zero), "-04:00"));
  952. Console.WriteLine(result);
  953. Assert.That(result?.Year, Is.EqualTo(2022));
  954. }
  955. [Test]
  956. public void ToDatetimeOffsetTest([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  957. {
  958. using var db = new SystemDB(context);
  959. var result = db.Select(() => SqlFn.ToDatetimeOffset(new DateTime(2022, 02, 22), "-04:00"));
  960. Console.WriteLine(result);
  961. Assert.That(result?.Year, Is.EqualTo(2022));
  962. }
  963. [Test]
  964. public void YearTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  965. {
  966. using var db = new SystemDB(context);
  967. var result = db.Select(() => SqlFn.Year("2022-02-24"));
  968. Console.WriteLine(result);
  969. Assert.That(result, Is.EqualTo(2022));
  970. }
  971. [Test]
  972. public void YearTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  973. {
  974. using var db = new SystemDB(context);
  975. var result = db.Select(() => SqlFn.Year(new DateTime(2022, 02, 22)));
  976. Console.WriteLine(result);
  977. Assert.That(result, Is.EqualTo(2022));
  978. }
  979. [Test]
  980. public void YearTest3([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
  981. {
  982. using var db = new SystemDB(context);
  983. var result = db.Select(() => SqlFn.Year(new DateTimeOffset(new DateTime(2022, 02, 22), TimeSpan.Zero)));
  984. Console.WriteLine(result);
  985. Assert.That(result, Is.EqualTo(2022));
  986. }
  987. #endregion
  988. #region Json
  989. [Test]
  990. public void IsJson([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  991. {
  992. using var db = new SystemDB(context);
  993. var result = db.Select(() => SqlFn.IsJson("{ \"test\" : 1 }"));
  994. Console.WriteLine(result);
  995. Assert.That(result, Is.True);
  996. }
  997. [Test]
  998. public void JsonValue([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  999. {
  1000. using var db = new SystemDB(context);
  1001. var result = db.Select(() => SqlFn.JsonValue("{ \"test\" : 1 }", "$.test"));
  1002. Console.WriteLine(result);
  1003. Assert.That(result, Is.EqualTo("1"));
  1004. }
  1005. [Test]
  1006. public void JsonQuery([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  1007. {
  1008. using var db = new SystemDB(context);
  1009. var result = db.Select(() => SqlFn.JsonQuery("{ \"test\" : 1 }", "$"));
  1010. Console.WriteLine(result);
  1011. Assert.That(result, Is.EqualTo("{ \"test\" : 1 }"));
  1012. }
  1013. [Test]
  1014. public void JsonModify([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  1015. {
  1016. using var db = new SystemDB(context);
  1017. var result = db.Select(() => SqlFn.JsonModify("{ \"test\" : 1 }", "$.test", "2"));
  1018. Console.WriteLine(result);
  1019. Assert.That(result, Is.EqualTo("{ \"test\" : \"2\" }"));
  1020. }
  1021. [Test]
  1022. public void OpenJson1([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  1023. {
  1024. using var db = new SystemDB(context);
  1025. var result = db.GetTable<SqlFn.JsonData>(null, LinqToDB.Linq.MethodHelper.GetMethodInfo(SqlFn.OpenJson, string.Empty), "{ \"test\" : 1 }").ToArray();
  1026. Console.WriteLine(result);
  1027. var expected = new[]
  1028. {
  1029. new SqlFn.JsonData { Key = "test", Value = "1", Type = 2, },
  1030. };
  1031. AreEqual(expected, result);
  1032. }
  1033. [Test]
  1034. public void OpenJson2([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  1035. {
  1036. using var db = new SystemDB(context);
  1037. var result = db.GetTable<SqlFn.JsonData>(null, LinqToDB.Linq.MethodHelper.GetMethodInfo(SqlFn.OpenJson, string.Empty, string.Empty), "{ \"test\" : [ 10, 20 ] }", "$.test").ToArray();
  1038. Console.WriteLine(result);
  1039. var expected = new[]
  1040. {
  1041. new SqlFn.JsonData { Key = "0", Value = "10", Type = 2, },
  1042. new SqlFn.JsonData { Key = "1", Value = "20", Type = 2, },
  1043. };
  1044. AreEqual(expected, result);
  1045. }
  1046. [Test]
  1047. public void OpenJson3([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  1048. {
  1049. using var db = new SystemDB(context);
  1050. var result = db.GetTable<SqlFn.JsonData>(null, LinqToDB.Linq.MethodHelper.GetMethodInfo(SqlFn.OpenJson, string.Empty), "[ 10, 20, 30, 40, 50, 60, 70 ]")
  1051. .Where(jd => jd.Key != "2")
  1052. .Where(jd => jd.Value != "60")
  1053. .Select(jd => jd.Value)
  1054. .ToArray();
  1055. Console.WriteLine(result);
  1056. var expected = new[] { "10", "20", "40", "50", "70" };
  1057. AreEqual(expected, result);
  1058. }
  1059. #if !NET45
  1060. [Test]
  1061. public void OpenJson4([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  1062. {
  1063. using var db = new SystemDB(context);
  1064. var result = db.OpenJson("{ \"test\" : 1 }").ToArray();
  1065. Console.WriteLine(result);
  1066. var expected = new[]
  1067. {
  1068. new SqlFn.JsonData { Key = "test", Value = "1", Type = 2, },
  1069. };
  1070. AreEqual(expected, result);
  1071. }
  1072. // SQL Server 2016 doesn't support @var for path
  1073. [Test]
  1074. public void OpenJson5([IncludeDataSources(TestProvName.AllSqlServer2017Plus)] string context)
  1075. {
  1076. using var db = new SystemDB(context);
  1077. var result = db.OpenJson("{ \"test\" : [ 10, 20 ] }", "$.test").ToArray();
  1078. Console.WriteLine(result);
  1079. var expected = new[]
  1080. {
  1081. new SqlFn.JsonData { Key = "0", Value = "10", Type = 2, },
  1082. new SqlFn.JsonData { Key = "1", Value = "20", Type = 2, },
  1083. };
  1084. AreEqual(expected, result);
  1085. }
  1086. [Test]
  1087. public void OpenJson6([IncludeDataSources(TestProvName.AllSqlServer2016Plus)] string context)
  1088. {
  1089. using var db = new SystemDB(context);
  1090. var result = db.OpenJson("[ 10, 20, 30, 40, 50, 60, 70 ]")
  1091. .Where(jd => jd.Key != "2")
  1092. .Where(jd => jd.Value != "60")
  1093. .Select(jd => jd.Value)
  1094. .ToArray();
  1095. Console.WriteLine(result);
  1096. var expected = new[] { "10", "20", "40", "50", "70" };
  1097. AreEqual(expected, result);
  1098. }
  1099. #endif
  1100. #endregion
  1101. #region Mathematical
  1102. [Test]
  1103. public void AbsTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1104. {
  1105. using var db = new SystemDB(context);
  1106. var result = db.Select(() => SqlFn.Abs("-10"));
  1107. Console.WriteLine(result);
  1108. Assert.That(result, Is.EqualTo("10"));
  1109. }
  1110. [Test]
  1111. public void AbsTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1112. {
  1113. using var db = new SystemDB(context);
  1114. var result = db.Select(() => SqlFn.Abs(-10.01m));
  1115. Console.WriteLine(result);
  1116. Assert.That(result, Is.EqualTo(10.01m));
  1117. }
  1118. [Test]
  1119. public void AcosTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1120. {
  1121. using var db = new SystemDB(context);
  1122. var result = db.Select(() => SqlFn.Acos(0.5));
  1123. Console.WriteLine(result);
  1124. Assert.That(result, Is.EqualTo(Math.Acos(0.5)));
  1125. }
  1126. [Test]
  1127. public void AsinTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1128. {
  1129. using var db = new SystemDB(context);
  1130. var result = db.Select(() => SqlFn.Asin(0.5));
  1131. Console.WriteLine(result);
  1132. Assert.That(result, Is.EqualTo(Math.Asin(0.5)));
  1133. }
  1134. [Test]
  1135. public void AtanTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1136. {
  1137. using var db = new SystemDB(context);
  1138. var result = db.Select(() => SqlFn.Atan(0.5));
  1139. Console.WriteLine(result);
  1140. Assert.That(result, Is.EqualTo(Math.Atan(0.5)));
  1141. }
  1142. [Test]
  1143. public void Atn2Test([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1144. {
  1145. using var db = new SystemDB(context);
  1146. var result = db.Select(() => SqlFn.Atn2(10, 100));
  1147. Console.WriteLine(result);
  1148. Assert.That(result, Is.EqualTo(0));
  1149. }
  1150. [Test]
  1151. public void CeilingTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1152. {
  1153. using var db = new SystemDB(context);
  1154. var result = db.Select(() => SqlFn.Ceiling(123.45));
  1155. Console.WriteLine(result);
  1156. Assert.That(result, Is.EqualTo(124));
  1157. }
  1158. [Test]
  1159. public void CosTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1160. {
  1161. using var db = new SystemDB(context);
  1162. var result = db.Select(() => SqlFn.Cos(0));
  1163. Console.WriteLine(result);
  1164. Assert.That(result, Is.EqualTo(Math.Cos(0)));
  1165. }
  1166. [Test]
  1167. public void CotTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1168. {
  1169. using var db = new SystemDB(context);
  1170. var result = db.Select(() => SqlFn.Cot(1));
  1171. Console.WriteLine(result);
  1172. Assert.That(result, Is.EqualTo(0));
  1173. }
  1174. [Test]
  1175. public void DegreesTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1176. {
  1177. using var db = new SystemDB(context);
  1178. var result = db.Select(() => SqlFn.Degrees(1.5));
  1179. Console.WriteLine(result);
  1180. Assert.That(result, Is.GreaterThan(0));
  1181. }
  1182. [Test]
  1183. public void ExpTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1184. {
  1185. using var db = new SystemDB(context);
  1186. var result = db.Select(() => SqlFn.Exp(10));
  1187. Console.WriteLine(result);
  1188. Assert.That(result, Is.GreaterThan(0));
  1189. }
  1190. [Test]
  1191. public void FloorTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1192. {
  1193. using var db = new SystemDB(context);
  1194. var result = db.Select(() => SqlFn.Floor(10.11));
  1195. Console.WriteLine(result);
  1196. Assert.That(result, Is.EqualTo(10));
  1197. }
  1198. [Test]
  1199. public void LogTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1200. {
  1201. using var db = new SystemDB(context);
  1202. var result = db.Select(() => SqlFn.Log(SqlFn.Exp(10)));
  1203. Console.WriteLine(result);
  1204. Assert.That(result, Is.EqualTo(10));
  1205. }
  1206. [Test]
  1207. public void LogTest2([IncludeDataSources(TestProvName.AllSqlServer2012Plus)] string context)
  1208. {
  1209. using var db = new SystemDB(context);
  1210. var result = db.Select(() => SqlFn.Log(10.0, 2));
  1211. Console.WriteLine(result);
  1212. Assert.That(result, Is.EqualTo(Math.Log(10, 2)));
  1213. }
  1214. [Test]
  1215. public void Log10Test([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1216. {
  1217. using var db = new SystemDB(context);
  1218. var result = db.Select(() => SqlFn.Log10(SqlFn.Exp(10)));
  1219. Console.WriteLine(result);
  1220. Assert.That(result, Is.EqualTo(10));
  1221. }
  1222. [Test]
  1223. public void PITest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1224. {
  1225. using var db = new SystemDB(context);
  1226. var result = db.Select(() => SqlFn.PI());
  1227. Console.WriteLine(result);
  1228. Assert.That(result, Is.EqualTo(Math.PI));
  1229. }
  1230. [Test]
  1231. public void PowerTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1232. {
  1233. using var db = new SystemDB(context);
  1234. var result = db.Select(() => SqlFn.Power(2m, 2));
  1235. Console.WriteLine(result);
  1236. Assert.That(result, Is.EqualTo(Math.Pow(2, 2)));
  1237. }
  1238. [Test]
  1239. public void RadiansTest([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1240. {
  1241. using var db = new SystemDB(context);
  1242. var result = db.Select(() => SqlFn.Round(SqlFn.Radians(-45.01m), 4));
  1243. Console.WriteLine(result);
  1244. Assert.That(result, Is.EqualTo(-0.7856m));
  1245. }
  1246. [Test]
  1247. public void RandTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1248. {
  1249. using var db = new SystemDB(context);
  1250. var result = db.Select(() => SqlFn.Random());
  1251. Console.WriteLine(result);
  1252. Assert.That(result, Is.GreaterThanOrEqualTo(0).And.LessThanOrEqualTo(1));
  1253. }
  1254. [Test]
  1255. public void RandTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1256. {
  1257. using var db = new SystemDB(context);
  1258. var result = db.Select(() => SqlFn.Random(10));
  1259. Console.WriteLine(result);
  1260. Assert.That(result, Is.GreaterThanOrEqualTo(0).And.LessThanOrEqualTo(1));
  1261. }
  1262. [Test]
  1263. public void RoundTest1([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1264. {
  1265. using var db = new SystemDB(context);
  1266. var result = db.Select(() => SqlFn.Round(12345, -3));
  1267. Console.WriteLine(result);
  1268. Assert.That(result, Is.EqualTo(12000));
  1269. }
  1270. [Test]
  1271. public void RoundTest2([IncludeDataSources(TestProvName.AllSqlServer)] string context)
  1272. {
  1273. using var db = new SystemDB(context);
  1274. var result = db.Select(() => SqlF