SqlSugar/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Method.cs

613 lines
30 KiB
C#
Raw Normal View History

2017-01-28 21:56:15 +08:00
using OrmTest.Models;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
2017-03-04 15:07:58 +08:00
namespace OrmTest.UnitTest
2017-01-28 21:56:15 +08:00
{
2017-05-16 13:55:57 +08:00
public class Method : UnitTestBase
2017-01-28 21:56:15 +08:00
{
private Method() { }
public Method(int eachCount)
{
this.Count = eachCount;
}
internal void Init()
{
base.Begin();
for (int i = 0; i < base.Count; i++)
{
2017-06-14 00:20:41 +08:00
//Native methods
2017-06-14 01:08:12 +08:00
ExtendContainsArray();
2017-06-14 00:20:41 +08:00
ConvetToString();
ExtendToString();
ExtendSubstring();
2017-06-14 01:00:16 +08:00
ExtendDate();
2017-06-14 00:20:41 +08:00
//SqlFun methods
2017-06-12 17:47:25 +08:00
IIF();
IIF2();
2017-01-30 18:53:06 +08:00
#region StringIsNullOrEmpty
2017-06-04 09:27:41 +08:00
HasValue();
HasNumber();
2017-01-30 15:10:54 +08:00
StringIsNullOrEmpty();
2017-01-30 15:41:16 +08:00
StringIsNullOrEmpty2();
2017-01-30 16:42:33 +08:00
StringIsNullOrEmpty3();
2017-01-30 18:17:55 +08:00
StringIsNullOrEmpty4();
2017-06-04 08:13:18 +08:00
StringIsNullOrEmpty5();
2017-04-30 19:57:29 +08:00
#endregion
2017-01-30 18:53:06 +08:00
ToUpper();
2017-01-30 21:54:23 +08:00
ToLower();
2017-01-30 22:05:08 +08:00
Trim();
2017-01-31 20:39:57 +08:00
Contains();
2017-06-15 07:43:58 +08:00
Contains2();
2017-04-30 14:31:07 +08:00
ContainsArray();
2017-04-29 23:20:31 +08:00
StartsWith();
EndsWith();
2017-04-29 22:51:41 +08:00
Between();
Equals();
Equals_2();
DateIsSameByDay();
DateIsSameByType();
DateAddDay();
DateAddByType();
2017-04-29 23:37:49 +08:00
DateValue();
2017-04-30 13:04:06 +08:00
ToInt32();
ToInt64();
ToDate();
Tostring();
ToDecimal();
ToGuid();
ToDouble();
ToBool();
Substring();
Replace();
Length();
2017-01-28 21:56:15 +08:00
}
base.End("Method Test");
}
2017-01-31 20:39:57 +08:00
2017-06-14 00:20:41 +08:00
private void ExtendToString()
{
Expression<Func<Student, bool>> exp = it => it.Id.ToString() == "a";
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST([Id] AS NVARCHAR(MAX)) = @Const0 )", new List<SugarParameter>() {
new SugarParameter("@Const0","a")
2017-06-14 00:23:34 +08:00
}, "ExtendToString error");
2017-06-14 00:20:41 +08:00
}
private void ConvetToString()
{
Expression<Func<Student, bool>> exp = it => Convert.ToString(it.Id) == "a";
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST([Id] AS NVARCHAR(MAX)) = @Const0 )", new List<SugarParameter>() {
new SugarParameter("@Const0","a")
2017-06-14 00:23:34 +08:00
}, "ConvetToString error");
2017-06-14 00:20:41 +08:00
}
2017-04-30 13:04:06 +08:00
private void Length()
{
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.Length("aaaa") > 1;
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(LEN(@MethodConst0) > @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","aaaa"),new SugarParameter("@Const1",1)
2017-05-28 19:45:37 +08:00
}, "Length error");
2017-04-30 13:04:06 +08:00
}
private void Replace()
{
var x2 = Guid.NewGuid();
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.Replace("aaaa", "a", "1") == "a";
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(REPLACE(@MethodConst0,@MethodConst1,@MethodConst2) = @Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1","a") , new SugarParameter("@MethodConst2","1"),new SugarParameter("@Const3","a")
2017-05-28 19:45:37 +08:00
}, "Replace error");
2017-04-30 13:04:06 +08:00
}
private void Substring()
{
var x2 = Guid.NewGuid();
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.Substring("aaaa", 0, 2) == "a";
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(SUBSTRING(@MethodConst0,1 + @MethodConst1,@MethodConst2) = @Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1",0) , new SugarParameter("@MethodConst2",2),new SugarParameter("@Const3","a")
2017-05-28 19:45:37 +08:00
}, "Substring error");
2017-04-30 13:04:06 +08:00
}
2017-06-14 00:20:41 +08:00
private void ExtendSubstring()
{
var x2 = Guid.NewGuid();
Expression<Func<Student, bool>> exp = it =>"aaaa".Substring(0, 2)== "a";
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(SUBSTRING(@MethodConst0,1 + @MethodConst1,@MethodConst2) = @Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1",0) , new SugarParameter("@MethodConst2",2),new SugarParameter("@Const3","a")
}, "Substring error");
}
2017-04-30 13:04:06 +08:00
private void ToBool()
{
var x2 = Guid.NewGuid();
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.ToBool("true") == true;
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS BIT) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","true"),new SugarParameter("@Const1",(bool)true)
2017-05-28 19:45:37 +08:00
}, "ToBool error");
2017-04-30 13:04:06 +08:00
}
private void ToDouble()
{
var x2 = Guid.NewGuid();
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.ToDouble("2") == 2;
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS FLOAT) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","2"),new SugarParameter("@Const1",(Double)2)
2017-05-28 19:45:37 +08:00
}, "ToDouble error");
2017-04-30 13:04:06 +08:00
}
private void ToGuid()
{
var x2 = Guid.NewGuid();
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.ToGuid("A94027A3-476E-478D-8228-F4054394B874") == x2;
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS UNIQUEIDENTIFIER) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","A94027A3-476E-478D-8228-F4054394B874"),new SugarParameter("@Const1",x2)
2017-05-28 19:45:37 +08:00
}, "ToGuid error");
2017-04-30 13:04:06 +08:00
}
private void ToDecimal()
{
var x2 = DateTime.Now;
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.ToDecimal("22") == 1;
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS MONEY) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","22"),new SugarParameter("@Const1",(decimal)1)
2017-05-28 19:45:37 +08:00
}, "ToDecimal error");
2017-04-30 13:04:06 +08:00
}
private void Tostring()
{
var x2 = DateTime.Now;
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.ToString("2015-1-1") == "a";
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS NVARCHAR(MAX)) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1","a")
2017-05-28 19:45:37 +08:00
}, "Tostring error");
2017-04-30 13:04:06 +08:00
}
private void ToDate()
{
var x2 = DateTime.Now;
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.ToDate("2015-1-1") == x2;
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS DATETIME) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1",x2)
2017-05-28 19:45:37 +08:00
}, "ToDate error");
2017-04-30 13:04:06 +08:00
}
2017-06-14 01:00:16 +08:00
private void ExtendDate()
{
var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => Convert.ToDateTime("2015-1-1") == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS DATETIME) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1",x2)
}, "ExtendDate error");
}
2017-04-30 13:04:06 +08:00
private void ToInt64()
{
var x2 = DateTime.Now;
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.ToInt64("3") == 1;
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS BIGINT) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","3"),new SugarParameter("@Const1",(Int64)1)
2017-05-28 19:45:37 +08:00
}, "ToInt64 error");
2017-04-30 13:04:06 +08:00
}
private void ToInt32()
{
var x2 = DateTime.Now;
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.ToInt32("3") == 1;
2017-04-30 13:04:06 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS INT) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","3"),new SugarParameter("@Const1",1)
2017-05-28 19:45:37 +08:00
}, "ToInt32 error");
2017-04-30 13:04:06 +08:00
}
2017-04-29 23:37:49 +08:00
private void DateValue()
{
var x2 = DateTime.Now;
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.DateValue(x2, DateType.Year) == 1;
2017-04-29 23:37:49 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-30 11:09:27 +08:00
base.Check(value, pars, " ((@MethodConst1(@MethodConst0)) = @Const2 ) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",DateType.Year),new SugarParameter("@Const2",1)
2017-05-28 19:45:37 +08:00
}, "DateValue error");
2017-04-29 23:37:49 +08:00
}
2017-04-29 23:20:31 +08:00
private void StartsWith()
{
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.StartsWith(it.Name, "a");
2017-04-29 23:20:31 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] like @MethodConst0+'%') ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a")
2017-05-28 19:45:37 +08:00
}, "StartsWith error");
2017-04-29 23:20:31 +08:00
}
private void EndsWith()
{
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.EndsWith(it.Name, "a");
2017-04-29 23:20:31 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] like '%'+@MethodConst0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a")
}, "EndsWith");
}
2017-04-29 22:51:41 +08:00
private void Between()
{
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.Between(it.Name, 1, 2);
2017-04-29 23:08:14 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] BETWEEN @MethodConst0 AND @MethodConst1) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",1),new SugarParameter("@MethodConst1",2),
2017-05-28 19:45:37 +08:00
}, "Between error");
2017-04-29 22:51:41 +08:00
}
private void DateAddByType()
{
var x2 = DateTime.Now;
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.DateAdd(x2, 11, DateType.Millisecond) == x2;
2017-04-29 22:51:41 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-30 11:09:27 +08:00
base.Check(value, pars, "((DATEADD(@MethodConst2,@MethodConst1,@MethodConst0)) = @Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",11),new SugarParameter("@Const3",x2),
2017-04-29 22:51:41 +08:00
new SugarParameter("@MethodConst2",DateType.Millisecond)
2017-05-28 19:45:37 +08:00
}, "DateAddByType error");
2017-04-29 22:51:41 +08:00
}
private void DateAddDay()
{
var x2 = DateTime.Now;
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.DateAdd(x2, 1) == x2;
2017-04-29 22:51:41 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-30 11:09:27 +08:00
base.Check(value, pars, "((DATEADD(day,@MethodConst1,@MethodConst0)) = @Const2 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",1),new SugarParameter("@Const2",x2)
2017-05-28 19:45:37 +08:00
}, "DateIsSameByType error");
2017-04-29 22:51:41 +08:00
}
private void DateIsSameByType()
{
var x2 = DateTime.Now;
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.DateIsSame(x2, x2, DateType.Millisecond);
2017-04-29 22:51:41 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " (DATEDIFF(@MethodConst2,@MethodConst0,@MethodConst1)=0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2),
new SugarParameter("@MethodConst2",DateType.Millisecond)
2017-05-28 19:45:37 +08:00
}, "DateIsSameByType error");
2017-04-29 22:51:41 +08:00
}
private void DateIsSameByDay()
{
var x2 = DateTime.Now;
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.DateIsSame(x2, x2);
2017-04-29 22:51:41 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(DATEDIFF(day,@MethodConst0,@MethodConst1)=0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2)
2017-05-28 19:45:37 +08:00
}, "DateIsSameDay error");
2017-04-29 22:51:41 +08:00
}
private void Equals()
{
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.Equals(it.Name, "a");
2017-04-29 22:51:41 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] = @MethodConst0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a")
2017-05-28 19:45:37 +08:00
}, "Equals1 error");
2017-04-29 22:51:41 +08:00
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp2 = it => SqlFunc.Equals("a", it.Name);
2017-04-29 22:51:41 +08:00
SqlServerExpressionContext expContext2 = new SqlServerExpressionContext();
expContext2.Resolve(exp2, ResolveExpressType.WhereSingle);
var value2 = expContext2.Result.GetString();
var pars2 = expContext2.Parameters;
base.Check(value2, pars2, " (@MethodConst0 = [Name]) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a")
2017-05-28 19:45:37 +08:00
}, "Equals2 error");
2017-04-29 22:51:41 +08:00
}
private void Equals_2()
{
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.Equals(it.Name, it.Name);
2017-04-29 22:51:41 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] = [Name]) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a")
2017-05-28 19:45:37 +08:00
}, "Equals1 error");
2017-04-29 22:51:41 +08:00
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp2 = it => SqlFunc.Equals("a", "a2");
2017-04-29 22:51:41 +08:00
SqlServerExpressionContext expContext2 = new SqlServerExpressionContext();
expContext2.Resolve(exp2, ResolveExpressType.WhereSingle);
var value2 = expContext2.Result.GetString();
var pars2 = expContext2.Parameters;
base.Check(value2, pars2, " (@MethodConst0 = @MethodConst1) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a"),new SugarParameter("@MethodConst1","a2")
2017-05-28 19:45:37 +08:00
}, "Equals2 error");
2017-04-29 22:51:41 +08:00
}
2017-01-31 20:39:57 +08:00
private void Contains()
{
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.Contains(it.Name, "a");
2017-02-26 23:56:28 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-31 20:39:57 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-03-13 10:55:22 +08:00
base.Check(value, pars, " ([Name] like '%'+@MethodConst0+'%') ", new List<SugarParameter>() {
2017-01-31 21:23:01 +08:00
new SugarParameter("@MethodConst0","a")
2017-05-28 19:45:37 +08:00
}, "Contains error");
2017-01-31 20:39:57 +08:00
}
2017-06-15 07:43:58 +08:00
private void Contains2(string name="a")
{
Expression<Func<Student, bool>> exp = it => SqlFunc.Contains(it.Name, name);
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] like '%'+@MethodConst0+'%') ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a")
}, "Contains2 error");
}
2017-01-31 20:39:57 +08:00
2017-06-14 01:08:12 +08:00
private void ExtendContainsArray() {
2017-06-15 10:08:08 +08:00
var array = new string[] { "1", "2" }.ToList();
2017-06-14 01:08:12 +08:00
Expression<Func<Student, bool>> exp = it => array.Contains(it.Name);
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, null, " ([Name] IN ('1','2')) ", null, "Contains2 error");
}
2017-04-30 14:31:07 +08:00
private void ContainsArray()
{
2017-06-12 17:47:25 +08:00
string[] array = new string[] { "1", "2" };
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.ContainsArray(array, it.Name);
2017-04-30 14:31:07 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-06-12 17:47:25 +08:00
base.Check(value, null, " ([Name] IN ('1','2')) ", null, "Contains2 error");
2017-04-30 14:31:07 +08:00
}
2017-01-30 22:05:08 +08:00
private void Trim()
{
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.Trim(" a") == it.Name;
2017-02-26 23:56:28 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-30 22:05:08 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "((rtrim(ltrim(@MethodConst0))) = [Name] )", new List<SugarParameter>() {
2017-01-31 20:26:38 +08:00
new SugarParameter("@MethodConst0"," a")
2017-05-28 19:45:37 +08:00
}, "Trim error");
2017-01-30 22:05:08 +08:00
}
2017-01-30 18:53:06 +08:00
private void ToUpper()
2017-01-30 15:10:54 +08:00
{
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => "a" == SqlFunc.ToUpper(it.Id);
2017-02-26 23:56:28 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-30 15:10:54 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "( @Const0 = (UPPER([Id])) )", new List<SugarParameter>() {
2017-01-30 21:54:23 +08:00
new SugarParameter("@Const0","a")
2017-05-28 19:45:37 +08:00
}, "ToUpper error");
2017-01-30 15:41:16 +08:00
}
2017-01-30 21:54:23 +08:00
private void ToLower()
{
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => "a" == SqlFunc.ToLower(it.Id);
2017-02-26 23:56:28 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-30 21:54:23 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "( @Const0 = (LOWER([Id])) )", new List<SugarParameter>() {
2017-01-30 21:54:23 +08:00
new SugarParameter("@Const0","a")
2017-05-28 19:45:37 +08:00
}, "ToLower error");
2017-01-30 21:54:23 +08:00
}
2017-01-30 15:41:16 +08:00
2017-01-30 18:53:06 +08:00
#region StringIsNullOrEmpty
private void StringIsNullOrEmpty()
{
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => it.Id > 2 || SqlFunc.IsNullOrEmpty(it.Id); ;
2017-02-26 23:56:28 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-30 18:53:06 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "(( [Id] > @Id0 ) OR ( [Id]='' OR [Id] IS NULL ))", new List<SugarParameter>() {
2017-01-30 18:53:06 +08:00
new SugarParameter("@Id0",2)
2017-05-28 19:45:37 +08:00
}, "StringIsNullOrEmpty error");
2017-01-30 18:53:06 +08:00
}
2017-01-30 15:41:16 +08:00
private void StringIsNullOrEmpty2()
{
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(true); ;
2017-02-26 23:56:28 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-30 15:41:16 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
2017-01-30 21:54:23 +08:00
new SugarParameter("@MethodConst1",true),
2017-01-30 15:41:16 +08:00
new SugarParameter("@Id0",2)
2017-05-28 19:45:37 +08:00
}, "StringIsNullOrEmpty2 error");
2017-01-30 15:10:54 +08:00
}
2017-01-30 16:42:33 +08:00
private void StringIsNullOrEmpty3()
{
int a = 1;
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(a); ;
2017-02-26 23:56:28 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-30 16:42:33 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
2017-01-30 21:54:23 +08:00
new SugarParameter("@MethodConst1",1),
2017-01-30 16:42:33 +08:00
new SugarParameter("@Id0",2)
2017-05-28 19:45:37 +08:00
}, "StringIsNullOrEmpty3 error");
2017-01-30 16:42:33 +08:00
}
2017-01-30 18:17:55 +08:00
private void StringIsNullOrEmpty4()
{
WhereConst.name = "xx";
2017-05-31 15:42:21 +08:00
Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(WhereConst.name); ;
2017-02-26 23:56:28 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-30 18:17:55 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
2017-01-30 21:54:23 +08:00
new SugarParameter("@MethodConst1","xx"),
2017-01-30 18:17:55 +08:00
new SugarParameter("@Id0",2)
2017-05-28 19:45:37 +08:00
}, "StringIsNullOrEmpty4 error");
2017-06-04 08:13:18 +08:00
}
private void StringIsNullOrEmpty5()
{
WhereConst.name = "xx";
2017-06-12 17:47:25 +08:00
Expression<Func<Student, bool>> exp = it => !SqlFunc.IsNullOrEmpty(WhereConst.name); ;
2017-06-04 08:13:18 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "NOT( @MethodConst0='' OR @MethodConst0 IS NULL )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","xx")
}, "StringIsNullOrEmpty5 error");
}
2017-01-30 18:53:06 +08:00
#endregion
2017-06-04 09:27:41 +08:00
private void HasValue()
{
Expression<Func<Student, bool>> exp = it => SqlFunc.HasValue(it.Name);
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-06-12 17:47:25 +08:00
base.Check(value, pars, "( [Name]<>'' AND [Name] IS NOT NULL )", new List<SugarParameter>()
{
2017-06-04 09:27:41 +08:00
}, "HasValue error");
}
private void HasNumber()
{
Expression<Func<Student, bool>> exp = it => SqlFunc.HasNumber(it.Id);
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-06-12 17:47:25 +08:00
base.Check(value, pars, "( [Id]>0 AND [Id] IS NOT NULL )", new List<SugarParameter>()
{
2017-06-04 09:27:41 +08:00
}, "HasNumber error");
}
2017-06-12 17:47:25 +08:00
private void IIF()
{
2017-06-12 18:19:18 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(it.Id == 1, 1, 2)==1;
2017-06-12 17:47:25 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-06-12 23:34:43 +08:00
base.Check(value, pars, "(( CASE WHEN ( [Id] = @Id0 ) THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List<SugarParameter>()
2017-06-12 17:47:25 +08:00
{
2017-06-12 23:34:43 +08:00
new SugarParameter("@Id0",1),
new SugarParameter("@MethodConst1",1),
new SugarParameter("@MethodConst2",2),
new SugarParameter("@Const3",1)
2017-06-12 17:47:25 +08:00
}, "IIF error");
}
private void IIF2()
{
2017-06-12 18:19:18 +08:00
Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(SqlFunc.Contains(it.Name,"a"), 1, 2)==1;
2017-06-12 17:47:25 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-06-12 23:34:43 +08:00
base.Check(value, pars, "(( CASE WHEN ([Name] like '%'+@MethodConst0+'%') THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List<SugarParameter>()
2017-06-12 17:47:25 +08:00
{
2017-06-12 23:34:43 +08:00
new SugarParameter("@MethodConst0","a"),
new SugarParameter("@MethodConst1",1),
new SugarParameter("@MethodConst2",2),
new SugarParameter("@Const3",1)
2017-06-12 18:19:18 +08:00
}, "IIF2 error");
2017-06-12 17:47:25 +08:00
}
2017-01-28 21:56:15 +08:00
}
}
2017-01-30 15:41:16 +08:00