You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

799 lines
39 KiB

2 years ago
  1. using OrmTest.Models;
  2. using SqlSugar;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Linq.Expressions;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace OrmTest.UnitTest
  10. {
  11. public class Method : UnitTestBase
  12. {
  13. private Method() { }
  14. public Method(int eachCount)
  15. {
  16. this.Count = eachCount;
  17. }
  18. internal void Init()
  19. {
  20. base.Begin();
  21. for (int i = 0; i < base.Count; i++)
  22. {
  23. //Native methods
  24. ExtendContainsArray();
  25. ConvetToString();
  26. ExtendToString();
  27. ExtendSubstring();
  28. ExtendDate();
  29. //SqlFun methods
  30. MappingColumn();
  31. IIF();
  32. IIF2();
  33. IIF3();
  34. IIF4();
  35. IIF5();
  36. #region StringIsNullOrEmpty
  37. HasValue();
  38. HasNumber();
  39. StringIsNullOrEmpty();
  40. StringIsNullOrEmpty2();
  41. StringIsNullOrEmpty3();
  42. StringIsNullOrEmpty4();
  43. StringIsNullOrEmpty5();
  44. #endregion
  45. ToUpper();
  46. ToLower();
  47. Trim();
  48. Contains();
  49. Contains2();
  50. Contains3();
  51. ContainsArray();
  52. StartsWith();
  53. EndsWith();
  54. Between();
  55. Equals();
  56. Equals_2();
  57. DateIsSameByDay();
  58. DateIsSameByType();
  59. DateAddDay();
  60. DateAddByType();
  61. DateValue();
  62. ToInt32();
  63. ToInt64();
  64. ToDate();
  65. Tostring();
  66. ToDecimal();
  67. ToGuid();
  68. ToDouble();
  69. ToBool();
  70. Substring();
  71. Replace();
  72. Length();
  73. Time();
  74. Test1();
  75. }
  76. base.End("Method Test");
  77. }
  78. private void Test1()
  79. {
  80. var ids = new int[] { 1, 2, 3 };
  81. Expression<Func<Student, bool>> exp = it => ids.Contains(it.Id)&&!SqlFunc.IsNullOrEmpty(it.Name);
  82. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  83. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  84. var value = expContext.Result.GetString();
  85. var pars = expContext.Parameters;
  86. base.Check(value, pars, "(([Id] IN ('1','2','3')) AND NOT( [Name]='' OR [Name] IS NULL ))", new List<SugarParameter>() {
  87. }, "Test1 error");
  88. }
  89. private void ExtendToString()
  90. {
  91. Expression<Func<Student, bool>> exp = it => it.Id.ToString() == "a";
  92. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  93. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  94. var value = expContext.Result.GetString();
  95. var pars = expContext.Parameters;
  96. base.Check(value, pars, "(CAST([Id] AS NVARCHAR(MAX)) = @Const0 )", new List<SugarParameter>() {
  97. new SugarParameter("@Const0","a")
  98. }, "ExtendToString error");
  99. }
  100. private void ConvetToString()
  101. {
  102. Expression<Func<Student, bool>> exp = it => Convert.ToString(it.Id) == "a";
  103. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  104. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  105. var value = expContext.Result.GetString();
  106. var pars = expContext.Parameters;
  107. base.Check(value, pars, "(CAST([Id] AS NVARCHAR(MAX)) = @Const0 )", new List<SugarParameter>() {
  108. new SugarParameter("@Const0","a")
  109. }, "ConvetToString error");
  110. }
  111. private void Length()
  112. {
  113. Expression<Func<Student, bool>> exp = it => SqlFunc.Length("aaaa") > 1;
  114. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  115. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  116. var value = expContext.Result.GetString();
  117. var pars = expContext.Parameters;
  118. base.Check(value, pars, "(LEN(@MethodConst0) > @Const1 )", new List<SugarParameter>() {
  119. new SugarParameter("@MethodConst0","aaaa"),new SugarParameter("@Const1",1)
  120. }, "Length error");
  121. Length2();
  122. Length3();
  123. }
  124. private void Length2()
  125. {
  126. Expression<Func<Student, bool>> exp = it => it.Name.Length > 1;
  127. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  128. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  129. var value = expContext.Result.GetString();
  130. var pars = expContext.Parameters;
  131. base.Check(value, pars, "(LEN([Name])> @Length1 )", new List<SugarParameter>() {
  132. new SugarParameter("@Length1",1)
  133. }, "Length2 error");
  134. }
  135. private void Length3()
  136. {
  137. Expression<Func<Student, bool>> exp = it => it.Name.Length > "a".Length;
  138. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  139. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  140. var value = expContext.Result.GetString();
  141. var pars = expContext.Parameters;
  142. base.Check(value, pars, "(LEN([Name])> @Length1 )", new List<SugarParameter>() {
  143. new SugarParameter("@Length1",1)
  144. }, "Length3 error");
  145. }
  146. private void Time()
  147. {
  148. TimeSpan s = TimeSpan.Parse("11:22:22");
  149. Expression<Func<Student, bool>> exp = it => SqlFunc.ToTime("11:12:59")==s;
  150. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  151. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  152. var value = expContext.Result.GetString();
  153. var pars = expContext.Parameters;
  154. base.Check(value, pars, "(CAST(@MethodConst0 AS TIME) = @Const1 )", new List<SugarParameter>() {
  155. new SugarParameter("@MethodConst0","11:12:59"),new SugarParameter("@Const1",s)
  156. }, "Time error");
  157. }
  158. private void Replace()
  159. {
  160. var x2 = Guid.NewGuid();
  161. Expression<Func<Student, bool>> exp = it => SqlFunc.Replace("aaaa", "a", "1") == "a";
  162. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  163. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  164. var value = expContext.Result.GetString();
  165. var pars = expContext.Parameters;
  166. base.Check(value, pars, "(REPLACE(@MethodConst0,@MethodConst1,@MethodConst2) = @Const3 )", new List<SugarParameter>() {
  167. new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1","a") , new SugarParameter("@MethodConst2","1"),new SugarParameter("@Const3","a")
  168. }, "Replace error");
  169. }
  170. private void Substring()
  171. {
  172. var x2 = Guid.NewGuid();
  173. Expression<Func<Student, bool>> exp = it => SqlFunc.Substring("aaaa", 0, 2) == "a";
  174. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  175. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  176. var value = expContext.Result.GetString();
  177. var pars = expContext.Parameters;
  178. base.Check(value, pars, "(SUBSTRING(@MethodConst0,1 + @MethodConst1,@MethodConst2) = @Const3 )", new List<SugarParameter>() {
  179. new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1",0) , new SugarParameter("@MethodConst2",2),new SugarParameter("@Const3","a")
  180. }, "Substring error");
  181. }
  182. private void ExtendSubstring()
  183. {
  184. var x2 = Guid.NewGuid();
  185. Expression<Func<Student, bool>> exp = it =>"aaaa".Substring(0, 2)== "a";
  186. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  187. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  188. var value = expContext.Result.GetString();
  189. var pars = expContext.Parameters;
  190. base.Check(value, pars, "(SUBSTRING(@MethodConst0,1 + @MethodConst1,@MethodConst2) = @Const3 )", new List<SugarParameter>() {
  191. new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1",0) , new SugarParameter("@MethodConst2",2),new SugarParameter("@Const3","a")
  192. }, "Substring error");
  193. }
  194. private void ToBool()
  195. {
  196. var x2 = Guid.NewGuid();
  197. Expression<Func<Student, bool>> exp = it => SqlFunc.ToBool("true") == true;
  198. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  199. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  200. var value = expContext.Result.GetString();
  201. var pars = expContext.Parameters;
  202. base.Check(value, pars, "(CAST(@MethodConst0 AS BIT) = @Const1 )", new List<SugarParameter>() {
  203. new SugarParameter("@MethodConst0","true"),new SugarParameter("@Const1",(bool)true)
  204. }, "ToBool error");
  205. }
  206. private void ToDouble()
  207. {
  208. var x2 = Guid.NewGuid();
  209. Expression<Func<Student, bool>> exp = it => SqlFunc.ToDouble("2") == 2;
  210. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  211. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  212. var value = expContext.Result.GetString();
  213. var pars = expContext.Parameters;
  214. base.Check(value, pars, "(CAST(@MethodConst0 AS FLOAT) = @Const1 )", new List<SugarParameter>() {
  215. new SugarParameter("@MethodConst0","2"),new SugarParameter("@Const1",(Double)2)
  216. }, "ToDouble error");
  217. }
  218. private void ToGuid()
  219. {
  220. var x2 = Guid.NewGuid();
  221. Expression<Func<Student, bool>> exp = it => SqlFunc.ToGuid("A94027A3-476E-478D-8228-F4054394B874") == x2;
  222. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  223. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  224. var value = expContext.Result.GetString();
  225. var pars = expContext.Parameters;
  226. base.Check(value, pars, "(CAST(@MethodConst0 AS UNIQUEIDENTIFIER) = @Const1 )", new List<SugarParameter>() {
  227. new SugarParameter("@MethodConst0","A94027A3-476E-478D-8228-F4054394B874"),new SugarParameter("@Const1",x2)
  228. }, "ToGuid error");
  229. }
  230. private void ToDecimal()
  231. {
  232. var x2 = DateTime.Now;
  233. Expression<Func<Student, bool>> exp = it => SqlFunc.ToDecimal("22") == 1;
  234. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  235. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  236. var value = expContext.Result.GetString();
  237. var pars = expContext.Parameters;
  238. base.Check(value, pars, "(CAST(@MethodConst0 AS MONEY) = @Const1 )", new List<SugarParameter>() {
  239. new SugarParameter("@MethodConst0","22"),new SugarParameter("@Const1",(decimal)1)
  240. }, "ToDecimal error");
  241. }
  242. private void Tostring()
  243. {
  244. var x2 = DateTime.Now;
  245. Expression<Func<Student, bool>> exp = it => SqlFunc.ToString("2015-1-1") == "a";
  246. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  247. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  248. var value = expContext.Result.GetString();
  249. var pars = expContext.Parameters;
  250. base.Check(value, pars, "(CAST(@MethodConst0 AS NVARCHAR(MAX)) = @Const1 )", new List<SugarParameter>() {
  251. new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1","a")
  252. }, "Tostring error");
  253. }
  254. private void ToDate()
  255. {
  256. var x2 = DateTime.Now;
  257. Expression<Func<Student, bool>> exp = it => SqlFunc.ToDate("2015-1-1") == x2;
  258. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  259. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  260. var value = expContext.Result.GetString();
  261. var pars = expContext.Parameters;
  262. base.Check(value, pars, "(CAST(@MethodConst0 AS DATETIME) = @Const1 )", new List<SugarParameter>() {
  263. new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1",x2)
  264. }, "ToDate error");
  265. }
  266. private void ExtendDate()
  267. {
  268. var x2 = DateTime.Now;
  269. Expression<Func<Student, bool>> exp = it => Convert.ToDateTime("2015-1-1") == x2;
  270. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  271. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  272. var value = expContext.Result.GetString();
  273. var pars = expContext.Parameters;
  274. base.Check(value, pars, "(CAST(@MethodConst0 AS DATETIME) = @Const1 )", new List<SugarParameter>() {
  275. new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1",x2)
  276. }, "ExtendDate error");
  277. }
  278. private void ToInt64()
  279. {
  280. var x2 = DateTime.Now;
  281. Expression<Func<Student, bool>> exp = it => SqlFunc.ToInt64("3") == 1;
  282. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  283. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  284. var value = expContext.Result.GetString();
  285. var pars = expContext.Parameters;
  286. base.Check(value, pars, "(CAST(@MethodConst0 AS BIGINT) = @Const1 )", new List<SugarParameter>() {
  287. new SugarParameter("@MethodConst0","3"),new SugarParameter("@Const1",(Int64)1)
  288. }, "ToInt64 error");
  289. }
  290. private void ToInt32()
  291. {
  292. var x2 = DateTime.Now;
  293. Expression<Func<Student, bool>> exp = it => SqlFunc.ToInt32("3") == 1;
  294. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  295. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  296. var value = expContext.Result.GetString();
  297. var pars = expContext.Parameters;
  298. base.Check(value, pars, "(CAST(@MethodConst0 AS INT) = @Const1 )", new List<SugarParameter>() {
  299. new SugarParameter("@MethodConst0","3"),new SugarParameter("@Const1",1)
  300. }, "ToInt32 error");
  301. }
  302. private void DateValue()
  303. {
  304. var x2 = DateTime.Now;
  305. Expression<Func<Student, bool>> exp = it => SqlFunc.DateValue(x2, DateType.Year) == 1;
  306. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  307. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  308. var value = expContext.Result.GetString();
  309. var pars = expContext.Parameters;
  310. base.Check(value, pars, " (DateName(Year,@MethodConst0) = @Const2 ) ", new List<SugarParameter>() {
  311. new SugarParameter("@MethodConst0",x2),new SugarParameter("@Const2",1)
  312. }, "DateValue error");
  313. }
  314. private void StartsWith()
  315. {
  316. Expression<Func<Student, bool>> exp = it => SqlFunc.StartsWith(it.Name, "a");
  317. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  318. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  319. var value = expContext.Result.GetString();
  320. var pars = expContext.Parameters;
  321. base.Check(value, pars, " ([Name] like @MethodConst0+'%') ", new List<SugarParameter>() {
  322. new SugarParameter("@MethodConst0","a")
  323. }, "StartsWith error");
  324. }
  325. private void EndsWith()
  326. {
  327. Expression<Func<Student, bool>> exp = it => SqlFunc.EndsWith(it.Name, "a");
  328. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  329. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  330. var value = expContext.Result.GetString();
  331. var pars = expContext.Parameters;
  332. base.Check(value, pars, " ([Name] like '%'+@MethodConst0) ", new List<SugarParameter>() {
  333. new SugarParameter("@MethodConst0","a")
  334. }, "EndsWith");
  335. }
  336. private void Between()
  337. {
  338. Expression<Func<Student, bool>> exp = it => SqlFunc.Between(it.Name, 1, 2);
  339. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  340. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  341. var value = expContext.Result.GetString();
  342. var pars = expContext.Parameters;
  343. base.Check(value, pars, " ([Name] BETWEEN @MethodConst0 AND @MethodConst1) ", new List<SugarParameter>() {
  344. new SugarParameter("@MethodConst0",1),new SugarParameter("@MethodConst1",2),
  345. }, "Between error");
  346. }
  347. private void DateAddByType()
  348. {
  349. var x2 = DateTime.Now;
  350. Expression<Func<Student, bool>> exp = it => SqlFunc.DateAdd(x2, 11, DateType.Millisecond) == x2;
  351. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  352. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  353. var value = expContext.Result.GetString();
  354. var pars = expContext.Parameters;
  355. base.Check(value, pars, "((DATEADD(Millisecond,@MethodConst1,@MethodConst0)) = @Const3 )", new List<SugarParameter>() {
  356. new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",11),new SugarParameter("@Const3",x2)
  357. }, "DateAddByType error");
  358. }
  359. private void DateAddDay()
  360. {
  361. var x2 = DateTime.Now;
  362. Expression<Func<Student, bool>> exp = it => SqlFunc.DateAdd(x2, 1) == x2;
  363. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  364. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  365. var value = expContext.Result.GetString();
  366. var pars = expContext.Parameters;
  367. base.Check(value, pars, "((DATEADD(day,@MethodConst1,@MethodConst0)) = @Const2 )", new List<SugarParameter>() {
  368. new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",1),new SugarParameter("@Const2",x2)
  369. }, "DateAddDay error");
  370. DateAddDay2();
  371. DateAddDay3();
  372. }
  373. private void DateAddDay2()
  374. {
  375. var x2 = DateTime.Now;
  376. Expression<Func<DataTestInfo, bool>> exp = it =>it.Datetime2.Value.AddHours(10) == x2;
  377. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  378. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  379. var value = expContext.Result.GetString();
  380. var pars = expContext.Parameters;
  381. base.Check(value, pars, "((DATEADD(Hour,@MethodConst1,[Datetime2])) = @Const2 )", new List<SugarParameter>() {
  382. new SugarParameter("@MethodConst1",10)
  383. ,new SugarParameter("@Const2",x2)
  384. }, "DateAddDay2 error");
  385. }
  386. private void DateAddDay3()
  387. {
  388. var x2 = DateTime.Now;
  389. Expression<Func<Student, bool>> exp = it => x2.AddHours(1) == x2;
  390. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  391. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  392. var value = expContext.Result.GetString();
  393. var pars = expContext.Parameters;
  394. base.Check(value, pars, "((DATEADD(Hour,@MethodConst2,@MethodConst1)) = @Const3 )", new List<SugarParameter>() {
  395. new SugarParameter("@MethodConst2",1),
  396. new SugarParameter("@MethodConst1",x2)
  397. ,new SugarParameter("@Const3",x2)
  398. }, "DateAddDay3 error");
  399. }
  400. private void DateIsSameByType()
  401. {
  402. var x2 = DateTime.Now;
  403. Expression<Func<Student, bool>> exp = it => SqlFunc.DateIsSame(x2, x2, DateType.Millisecond);
  404. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  405. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  406. var value = expContext.Result.GetString();
  407. var pars = expContext.Parameters;
  408. base.Check(value, pars, " (DATEDIFF(Millisecond,@MethodConst0,@MethodConst1)=0) ", new List<SugarParameter>() {
  409. new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2)
  410. }, "DateIsSameByType error");
  411. }
  412. private void DateIsSameByDay()
  413. {
  414. var x2 = DateTime.Now;
  415. Expression<Func<Student, bool>> exp = it => SqlFunc.DateIsSame(x2, x2);
  416. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  417. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  418. var value = expContext.Result.GetString();
  419. var pars = expContext.Parameters;
  420. base.Check(value, pars, "(DATEDIFF(day,@MethodConst0,@MethodConst1)=0) ", new List<SugarParameter>() {
  421. new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2)
  422. }, "DateIsSameDay error");
  423. }
  424. private void Equals()
  425. {
  426. Expression<Func<Student, bool>> exp = it => SqlFunc.Equals(it.Name, "a");
  427. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  428. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  429. var value = expContext.Result.GetString();
  430. var pars = expContext.Parameters;
  431. base.Check(value, pars, " ([Name] = @MethodConst0) ", new List<SugarParameter>() {
  432. new SugarParameter("@MethodConst0","a")
  433. }, "Equals1 error");
  434. Expression<Func<Student, bool>> exp2 = it => SqlFunc.Equals("a", it.Name);
  435. SqlServerExpressionContext expContext2 = new SqlServerExpressionContext();
  436. expContext2.Resolve(exp2, ResolveExpressType.WhereSingle);
  437. var value2 = expContext2.Result.GetString();
  438. var pars2 = expContext2.Parameters;
  439. base.Check(value2, pars2, " (@MethodConst0 = [Name]) ", new List<SugarParameter>() {
  440. new SugarParameter("@MethodConst0","a")
  441. }, "Equals2 error");
  442. }
  443. private void Equals_2()
  444. {
  445. Expression<Func<Student, bool>> exp = it => SqlFunc.Equals(it.Name, it.Name);
  446. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  447. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  448. var value = expContext.Result.GetString();
  449. var pars = expContext.Parameters;
  450. base.Check(value, pars, " ([Name] = [Name]) ", new List<SugarParameter>() {
  451. new SugarParameter("@MethodConst0","a")
  452. }, "Equals1 error");
  453. Expression<Func<Student, bool>> exp2 = it => SqlFunc.Equals("a", "a2");
  454. SqlServerExpressionContext expContext2 = new SqlServerExpressionContext();
  455. expContext2.Resolve(exp2, ResolveExpressType.WhereSingle);
  456. var value2 = expContext2.Result.GetString();
  457. var pars2 = expContext2.Parameters;
  458. base.Check(value2, pars2, " (@MethodConst0 = @MethodConst1) ", new List<SugarParameter>() {
  459. new SugarParameter("@MethodConst0","a"),new SugarParameter("@MethodConst1","a2")
  460. }, "Equals2 error");
  461. }
  462. private void Contains()
  463. {
  464. Expression<Func<Student, bool>> exp = it => SqlFunc.Contains(it.Name, "a");
  465. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  466. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  467. var value = expContext.Result.GetString();
  468. var pars = expContext.Parameters;
  469. base.Check(value, pars, " ([Name] like '%'+@MethodConst0+'%') ", new List<SugarParameter>() {
  470. new SugarParameter("@MethodConst0","a")
  471. }, "Contains error");
  472. }
  473. private void Contains2(string name="a")
  474. {
  475. Expression<Func<Student, bool>> exp = it => SqlFunc.Contains(it.Name, name);
  476. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  477. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  478. var value = expContext.Result.GetString();
  479. var pars = expContext.Parameters;
  480. base.Check(value, pars, " ([Name] like '%'+@MethodConst0+'%') ", new List<SugarParameter>() {
  481. new SugarParameter("@MethodConst0","a")
  482. }, "Contains2 error");
  483. }
  484. private void Contains3(string name = "a")
  485. {
  486. Expression<Func<Student, bool>> exp = it => !SqlFunc.Contains(it.Name, name)&&it.Id==1;
  487. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  488. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  489. var value = expContext.Result.GetString();
  490. var pars = expContext.Parameters;
  491. base.Check(value, pars, "(NOT ([Name] like '%'+@MethodConst0+'%') AND( [Id] = @Id1 ))", new List<SugarParameter>() {
  492. new SugarParameter("@MethodConst0","a"),
  493. new SugarParameter("@Id1",1)
  494. }, "Contains3 error");
  495. }
  496. private void ExtendContainsArray() {
  497. var array = new string[] { "1", "2" }.ToList();
  498. Expression<Func<Student, bool>> exp = it => array.Contains(it.Name);
  499. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  500. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  501. var value = expContext.Result.GetString();
  502. var pars = expContext.Parameters;
  503. base.Check(value, null, " ([Name] IN ('1','2')) ", null, "Contains2 error");
  504. }
  505. private void ContainsArray()
  506. {
  507. string[] array = new string[] { "1", "2" };
  508. Expression<Func<Student, bool>> exp = it => SqlFunc.ContainsArray(array, it.Name);
  509. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  510. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  511. var value = expContext.Result.GetString();
  512. var pars = expContext.Parameters;
  513. base.Check(value, null, " ([Name] IN ('1','2')) ", null, "Contains2 error");
  514. }
  515. private void Trim()
  516. {
  517. Expression<Func<Student, bool>> exp = it => SqlFunc.Trim(" a") == it.Name;
  518. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  519. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  520. var value = expContext.Result.GetString();
  521. var pars = expContext.Parameters;
  522. base.Check(value, pars, "((rtrim(ltrim(@MethodConst0))) = [Name] )", new List<SugarParameter>() {
  523. new SugarParameter("@MethodConst0"," a")
  524. }, "Trim error");
  525. }
  526. private void ToUpper()
  527. {
  528. Expression<Func<Student, bool>> exp = it => "a" == SqlFunc.ToUpper(it.Id);
  529. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  530. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  531. var value = expContext.Result.GetString();
  532. var pars = expContext.Parameters;
  533. base.Check(value, pars, "( @Const0 = (UPPER([Id])) )", new List<SugarParameter>() {
  534. new SugarParameter("@Const0","a")
  535. }, "ToUpper error");
  536. }
  537. private void ToLower()
  538. {
  539. Expression<Func<Student, bool>> exp = it => "a" == SqlFunc.ToLower(it.Id);
  540. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  541. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  542. var value = expContext.Result.GetString();
  543. var pars = expContext.Parameters;
  544. base.Check(value, pars, "( @Const0 = (LOWER([Id])) )", new List<SugarParameter>() {
  545. new SugarParameter("@Const0","a")
  546. }, "ToLower error");
  547. }
  548. #region StringIsNullOrEmpty
  549. private void StringIsNullOrEmpty()
  550. {
  551. Expression<Func<Student, bool>> exp = it => it.Id > 2 || SqlFunc.IsNullOrEmpty(it.Id);
  552. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  553. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  554. var value = expContext.Result.GetString();
  555. var pars = expContext.Parameters;
  556. base.Check(value, pars, "(( [Id] > @Id0 ) OR ( [Id]='' OR [Id] IS NULL ))", new List<SugarParameter>() {
  557. new SugarParameter("@Id0",2)
  558. }, "StringIsNullOrEmpty error");
  559. }
  560. private void StringIsNullOrEmpty2()
  561. {
  562. Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(true);
  563. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  564. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  565. var value = expContext.Result.GetString();
  566. var pars = expContext.Parameters;
  567. base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
  568. new SugarParameter("@MethodConst1",true),
  569. new SugarParameter("@Id0",2)
  570. }, "StringIsNullOrEmpty2 error");
  571. }
  572. private void StringIsNullOrEmpty3()
  573. {
  574. int a = 1;
  575. Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(a);
  576. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  577. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  578. var value = expContext.Result.GetString();
  579. var pars = expContext.Parameters;
  580. base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
  581. new SugarParameter("@MethodConst1",1),
  582. new SugarParameter("@Id0",2)
  583. }, "StringIsNullOrEmpty3 error");
  584. }
  585. private void StringIsNullOrEmpty4()
  586. {
  587. WhereConst.name = "xx";
  588. Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(WhereConst.name); ;
  589. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  590. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  591. var value = expContext.Result.GetString();
  592. var pars = expContext.Parameters;
  593. base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
  594. new SugarParameter("@MethodConst1","xx"),
  595. new SugarParameter("@Id0",2)
  596. }, "StringIsNullOrEmpty4 error");
  597. }
  598. private void StringIsNullOrEmpty5()
  599. {
  600. WhereConst.name = "xx";
  601. Expression<Func<Student, bool>> exp = it => !SqlFunc.IsNullOrEmpty(WhereConst.name); ;
  602. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  603. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  604. var value = expContext.Result.GetString();
  605. var pars = expContext.Parameters;
  606. base.Check(value, pars, "NOT( @MethodConst0='' OR @MethodConst0 IS NULL )", new List<SugarParameter>() {
  607. new SugarParameter("@MethodConst0","xx")
  608. }, "StringIsNullOrEmpty5 error");
  609. }
  610. #endregion
  611. private void HasValue()
  612. {
  613. Expression<Func<Student, bool>> exp = it => SqlFunc.HasValue(it.Name);
  614. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  615. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  616. var value = expContext.Result.GetString();
  617. var pars = expContext.Parameters;
  618. base.Check(value, pars, "( [Name]<>'' AND [Name] IS NOT NULL )", new List<SugarParameter>()
  619. {
  620. }, "HasValue error");
  621. HasValue2(1);
  622. }
  623. private void HasValue2(int p = 1)
  624. {
  625. Expression<Func<Student, bool>> exp = it => it.CreateTime.HasValue;
  626. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  627. expContext.IsSingle = false;
  628. expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
  629. var selectorValue = expContext.Result.GetString();
  630. var pars = expContext.Parameters;
  631. base.Check(
  632. @"( [it].[CreateTime]<>'' AND [it].[CreateTime] IS NOT NULL )", null, selectorValue, null,
  633. "Select.HasValue2 Error");
  634. }
  635. private void HasNumber()
  636. {
  637. Expression<Func<Student, bool>> exp = it => SqlFunc.HasNumber(it.Id);
  638. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  639. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  640. var value = expContext.Result.GetString();
  641. var pars = expContext.Parameters;
  642. base.Check(value, pars, "( [Id]>0 AND [Id] IS NOT NULL )", new List<SugarParameter>()
  643. {
  644. }, "HasNumber error");
  645. }
  646. private void MappingColumn() {
  647. Expression<Func<Student, bool>> exp = it => SqlFunc.MappingColumn(it.Id,"Name") == 1;
  648. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  649. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  650. var value = expContext.Result.GetString();
  651. var pars = expContext.Parameters;
  652. base.Check(value, pars, "(Name = @Const1 )", new List<SugarParameter>()
  653. {
  654. new SugarParameter("@Const1",1)
  655. }, "MappingColumn error");
  656. }
  657. private void IIF()
  658. {
  659. Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(it.Id == 1, 1, 2)==1;
  660. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  661. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  662. var value = expContext.Result.GetString();
  663. var pars = expContext.Parameters;
  664. base.Check(value, pars, "(( CASE WHEN ( [Id] = @Id0 ) THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List<SugarParameter>()
  665. {
  666. new SugarParameter("@Id0",1),
  667. new SugarParameter("@MethodConst1",1),
  668. new SugarParameter("@MethodConst2",2),
  669. new SugarParameter("@Const3",1)
  670. }, "IIF error");
  671. }
  672. private void IIF2()
  673. {
  674. Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(SqlFunc.Contains(it.Name,"a"), 1, 2)==1;
  675. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  676. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  677. var value = expContext.Result.GetString();
  678. var pars = expContext.Parameters;
  679. base.Check(value, pars, "(( CASE WHEN ([Name] like '%'+@MethodConst0+'%') THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List<SugarParameter>()
  680. {
  681. new SugarParameter("@MethodConst0","a"),
  682. new SugarParameter("@MethodConst1",1),
  683. new SugarParameter("@MethodConst2",2),
  684. new SugarParameter("@Const3",1)
  685. }, "IIF2 error");
  686. }
  687. private void IIF3()
  688. {
  689. Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(SqlFunc.Contains(it.Name, "a"), true, false) == true;
  690. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  691. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  692. var value = expContext.Result.GetString();
  693. var pars = expContext.Parameters;
  694. base.Check(value, pars, "(( CASE WHEN ([Name] like '%'+@MethodConst0+'%') THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List<SugarParameter>()
  695. {
  696. new SugarParameter("@MethodConst0","a"),
  697. new SugarParameter("@MethodConst1",true),
  698. new SugarParameter("@MethodConst2",false),
  699. new SugarParameter("@Const3",true)
  700. }, "IIF3 error");
  701. }
  702. private void IIF4()
  703. {
  704. Expression<Func<DataTestInfo2, bool>> exp = it => SqlFunc.IIF(true, it.Bool1, it.Bool2) == true;
  705. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  706. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  707. var value = expContext.Result.GetString();
  708. var pars = expContext.Parameters;
  709. base.Check(value, pars, "(( CASE WHEN ( 1 = 1 ) THEN [Bool1] ELSE [Bool2] END ) = @Const0 )", new List<SugarParameter>()
  710. {
  711. new SugarParameter("@Const0",true)
  712. }, "IIF4 error");
  713. }
  714. private void IIF5()
  715. {
  716. Expression<Func<DataTestInfo, bool>> exp = it => SqlFunc.IIF(true,Convert.ToBoolean(it.Datetime1), SqlFunc.ToBool(it.Datetime1)) == false;
  717. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  718. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  719. var value = expContext.Result.GetString();
  720. var pars = expContext.Parameters;
  721. base.Check(value, pars, "(( CASE WHEN ( 1 = 1 ) THEN CAST([Datetime1] AS BIT) ELSE CAST([Datetime1] AS BIT) END ) = @Const0 )", new List<SugarParameter>()
  722. {
  723. new SugarParameter("@Const0",false)
  724. }, "IIF5 error");
  725. IIF6();
  726. }
  727. private void IIF6()
  728. {
  729. var dt = DateTime.Now.Date;
  730. Expression <Func<DataTestInfo, bool>> exp = it => SqlFunc.IIF(dt == it.Datetime1,it.Datetime1, it.Datetime1) == dt;
  731. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  732. expContext.MappingColumns = new MappingColumnList();
  733. expContext.MappingColumns.Add("Datetime1", "Datetime2", "DataTestInfo");
  734. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  735. var value = expContext.Result.GetString();
  736. var pars = expContext.Parameters;
  737. base.Check(value, pars, "(( CASE WHEN ( @Datetime10 = [Datetime2] ) THEN [Datetime2] ELSE [Datetime2] END ) = @Const1 )", new List<SugarParameter>()
  738. {
  739. new SugarParameter("@Datetime10",dt),
  740. new SugarParameter("@Const1",dt)
  741. }, "IIF6 error");
  742. }
  743. }
  744. }