public void ResolveWhere_Tests() { var list = new[] { new { SQL = _resolver.ResolveWhere <User>(x => x.Id == 5), Result = "([Id] = 5)" }, new { SQL = _resolver.ResolveWhere <User>(x => 5 == x.Id), Result = "(5 = [Id])" }, new { SQL = _resolver.ResolveWhere <User>(x => 5 == 8), // TODO: This sould not be allowed => WHERE 0 Result = "0" // 5 == 8 is False, False => 0 }, new { SQL = _resolver.ResolveWhere <User>(x => x.Name == x.Surname), Result = "([Name] = [Surname])" }, new { SQL = _resolver.ResolveWhere <User>(x => x.Id == 5 && x.Email == "foo"), Result = "(([Id] = 5) AND ([Email] = 'foo'))" }, new { SQL = _resolver.ResolveWhere <User>(x => (x.Id == 5 && x.Email == "foo") || x.Active == true), Result = "((([Id] = 5) AND ([Email] = 'foo')) OR ([Active] = 1))" }, new { SQL = _resolver.ResolveWhere <User>(x => x.Id == 5 && (x.Email == "foo" || x.Active == true)), Result = "(([Id] = 5) AND (([Email] = 'foo') OR ([Active] = 1)))" }, }; foreach (var item in list) { Assert.Equal(item.SQL, item.Result); } }