DbFunction_Test.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System.Data;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. namespace Vitorm.MsTest.CustomTest
  4. {
  5. [TestClass]
  6. public class DbFunction_Test
  7. {
  8. [TestMethod]
  9. public void Test_DbFunction()
  10. {
  11. using var dbContext = DataSource.CreateDbContext();
  12. var userQuery = dbContext.Query<User>();
  13. // select * from `User` as t0 where IIF(`t0`.`fatherId` is not null, true, false )
  14. {
  15. var query = userQuery.Where(u => DbFunction.Call<bool>("IIF", u.fatherId != null, true, false));
  16. var userList = query.ToList();
  17. Assert.AreEqual(3, userList.Count);
  18. Assert.AreEqual(3, userList.Last().id);
  19. }
  20. {
  21. var query = userQuery.Where(u => u.birth == DbFunction.Call<DateTime?>("datetime", "2021-01-01 00:00:00", "+2 hours"));
  22. var userList = query.ToList();
  23. Assert.AreEqual(1, userList.Count);
  24. Assert.AreEqual(2, userList.First().id);
  25. }
  26. {
  27. var query = userQuery.Where(u => u.birth == DbFunction.Call<DateTime>("datetime", "2021-01-01 00:00:00", "+" + u.id + " hours"));
  28. var userList = query.ToList();
  29. Assert.AreEqual(6, userList.Count);
  30. Assert.AreEqual(1, userList.First().id);
  31. }
  32. // coalesce(parameter1,parameter2, …)
  33. {
  34. var query = userQuery.Where(u => DbFunction.Call<int?>("coalesce", u.fatherId, u.motherId) != null);
  35. var userList = query.ToList();
  36. Assert.AreEqual(3, userList.Count);
  37. Assert.AreEqual(1, userList.First().id);
  38. }
  39. }
  40. }
  41. }