代码之家  ›  专栏  ›  技术社区  ›  Ranjith Varatharajan

C中表达式树的单元测试#

  •  0
  • Ranjith Varatharajan  · 技术社区  · 7 年前

    如何在C中编写表达式树的单元测试。

    我有这门课需要测试。此方法返回表达式树,并获取一个表达式树作为参数。

    代码:

    public ExpressionStarter<SpecFinderDataModel> DoSearch(bool status, string searchValue, ExpressionStarter<SpecFinderDataModel> predicate)
    {
        var localPredicate = predicate;
        if (status == false)
        {
            var searchTerms = searchValue.Split(' ').ToList().ConvertAll(x => x.ToLower());
            localPredicate = localPredicate.Or(s => searchTerms.Any(srch => s.ProductID.ToLower().Contains(srch)));
            localPredicate = localPredicate.Or(s => searchTerms.Any(srch => s.ISBN13.ToLower().Contains(srch)));
            localPredicate = localPredicate.Or(s => searchTerms.Any(srch => s.Title.ToLower().Contains(srch)));
        }
        return localPredicate;
    }
    

    任何建议都是有益的。谢谢。

    更新第1号 我用Linqkit来表达

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mrinal Kamboj    7 年前

    Expression<Func<SpecFinderDataModel,bool>> DoSearch SpecFinderDataModel

    public class SpecFinderDataModel
    {
        public string ProductID {get; set;}
    
        public string ISBN13 {get; set;}
    
        public string Title {get; set;}
    }
    

       // Initial Expression value constant false is the result
       Expression<Func<SpecFinderDataModel, bool>> expr = c => false;
    
        // SpecFinderDataModel Object
        var sfd = new SpecFinderDataModel
        {
         ISBN13 = "",
         ProductID = "Test A B C",
         Title = ""
        }
    
        // Call DoSearch and supply the sfd for testing
        var result = DoSearch(false,"Test",expr).Compile()(sfd);
    
        // Assert the result in the unit test to understand 
        Assert.True(result,true);
    

    sfd