private void HandleParamStringFunctions(MethodCallExpression node)
        {
            var name = GetColumnName(node.Object as MemberExpression);

            object firstArg = null;

            if (node.Arguments.HasItems())
            {
                firstArg = node.Arguments[0].GetValue();
            }
            string value = "";

            switch (node.Method.Name)
            {
            case "StartsWith":
                value = $"{name} like @{Parameters.CurrentIndex}";
                Parameters.AddValues(firstArg + "%");
                break;

            case "EndsWith":
                value = $"{name} like @{Parameters.CurrentIndex}";
                Parameters.AddValues("%" + firstArg);
                break;

            case "Contains":
                value = $"{name} like @{Parameters.CurrentIndex}";
                Parameters.AddValues("%" + firstArg + "%");
                break;

            case "ToUpper":
            case "ToUpperInvariant":
                value = _provider.ToUpper(name);
                break;

            case "ToLower":
            case "ToLowerInvariant":
                value = _provider.ToLower(name);
                break;

            case "Substring":
                value = _provider.Substring(name, (int)firstArg, (int)node.Arguments[1].GetValue());
                break;
            }

            _sb.Append(value);
        }
 public void to_lower()
 {
     Get(d => d.Title.ToLower());
     A.CallTo(() => _provider.ToLower("Title")).MustHaveHappened();
 }