using System.Data; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Vitorm.MsTest.CustomTest { [TestClass] public class DbFunction_Test { [TestMethod] public void Test_DbFunction() { using var dbContext = DataSource.CreateDbContext(); var userQuery = dbContext.Query(); // select * from `User` as t0 where IIF(`t0`.`fatherId` is not null, true, false ) { var query = userQuery.Where(u => DbFunction.Call("IIF", u.fatherId != null, true, false)); var userList = query.ToList(); Assert.AreEqual(3, userList.Count); Assert.AreEqual(3, userList.Last().id); } { var query = userQuery.Where(u => u.birth == DbFunction.Call("datetime", "2021-01-01 00:00:00", "+2 hours")); var userList = query.ToList(); Assert.AreEqual(1, userList.Count); Assert.AreEqual(2, userList.First().id); } { var query = userQuery.Where(u => u.birth == DbFunction.Call("datetime", "2021-01-01 00:00:00", "+" + u.id + " hours")); var userList = query.ToList(); Assert.AreEqual(6, userList.Count); Assert.AreEqual(1, userList.First().id); } // coalesce(parameter1,parameter2, …) { var query = userQuery.Where(u => DbFunction.Call("coalesce", u.fatherId, u.motherId) != null); var userList = query.ToList(); Assert.AreEqual(3, userList.Count); Assert.AreEqual(1, userList.First().id); } } } }