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.

487 lines
21 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 Where : UnitTestBase
  12. {
  13. private Where() { }
  14. public Where(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. whereSingle30();
  24. whereSingle29("22");
  25. whereSingle28();
  26. whereSingle27();
  27. whereSingle26();
  28. whereSingle25();
  29. whereSingle24();
  30. whereSingle23();
  31. whereSingle22();
  32. whereSingle21();
  33. whereSingle20();
  34. whereSingle19();
  35. whereSingle18();
  36. whereSingle17();
  37. whereSingle16();
  38. whereSingle15();
  39. whereSingle1();
  40. whereSingle2();
  41. whereSingle3();
  42. whereSingle4();
  43. whereSingle5();
  44. whereSingle6();
  45. whereSingle7(new Student() { Id = 1 });
  46. whereSingle8(new Student() { Id = 1 });
  47. whereSingle9(new Student() { Id = 1 });
  48. whereSingle10();
  49. whereSingle11();
  50. whereSingle12();
  51. whereSingle13();
  52. whereSingle14();
  53. whereSingle15();
  54. WhereMultiple1();
  55. WhereMultiple2();
  56. }
  57. base.End("Where Test");
  58. }
  59. private void whereSingle30()
  60. {
  61. Expression<Func<Student, bool>> exp = it => it.Name == wc.name2;
  62. ExpressionContext expContext = new ExpressionContext();
  63. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  64. var value = expContext.Result.GetString();
  65. var pars = expContext.Parameters;
  66. base.Check(value, pars, "( [Name] = @Name0 )", new List<SugarParameter>() {
  67. new SugarParameter("@Name0","a")
  68. }, "whereSingle30");
  69. }
  70. public string Get28(string a) {
  71. return a + "1";
  72. }
  73. private void whereSingle29(string p2)
  74. {
  75. Expression<Func<Student, bool>> exp = it => Get28("22") == p2;
  76. ExpressionContext expContext = new ExpressionContext();
  77. expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
  78. var value = expContext.Result.GetString();
  79. var pars = expContext.Parameters;
  80. base.Check(value, pars, " (@constant0 = @Const1 )", new List<SugarParameter>() {
  81. new SugarParameter("@constant0","221"),
  82. new SugarParameter("@Const1","22")
  83. }, "whereSingle28");
  84. }
  85. private void whereSingle28()
  86. {
  87. Expression<Func<Student, bool>> exp = it => Get28("22")=="22";
  88. ExpressionContext expContext = new ExpressionContext();
  89. expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
  90. var value = expContext.Result.GetString();
  91. var pars = expContext.Parameters;
  92. base.Check(value, pars, " (@constant0 = @Const1 )", new List<SugarParameter>() {
  93. new SugarParameter("@constant0","221"),
  94. new SugarParameter("@Const1","22")
  95. }, "whereSingle28");
  96. }
  97. private void whereSingle27() {
  98. var schoolData = new School() { Id = 100, Name = "x" };
  99. Expression<Func<Student, bool>> exp = it => it.Name.Contains(schoolData.Name);
  100. ExpressionContext expContext = new ExpressionContext();
  101. expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
  102. var value = expContext.Result.GetString();
  103. var pars = expContext.Parameters;
  104. base.Check(value, pars, " ([it].[Name] like '%'+@MethodConst0+'%') ", new List<SugarParameter>() {
  105. new SugarParameter("@MethodConst0","x")
  106. }, "whereSingle27");
  107. }
  108. private void WhereMultiple1()
  109. {
  110. Expression<Func<Student, bool>> exp = it => it.Id > 1;
  111. ExpressionContext expContext = new ExpressionContext();
  112. expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
  113. var value = expContext.Result.GetString();
  114. var pars = expContext.Parameters;
  115. base.Check(value, pars, "( [it].[Id] > @Id0 )", new List<SugarParameter>() {
  116. new SugarParameter("@Id0",1)
  117. }, "WhereMultiple1");
  118. }
  119. private void WhereMultiple2()
  120. {
  121. string name = "a";
  122. WhereConst.name = "a1";
  123. Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name || it.Id == 1) || it.Name == WhereConst.name;
  124. ExpressionContext expContext = new ExpressionContext();
  125. expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
  126. var value = expContext.Result.GetString();
  127. var pars = expContext.Parameters;
  128. base.Check(value, pars, " (((( [it].[Id] > @Id0 ) AND ( [it].[Name] <> @Name1 )) OR ( [it].[Id] = @Id2 )) OR ( [it].[Name] = @Name3 ))", new List<SugarParameter>() {
  129. new SugarParameter("@Id0",1),
  130. new SugarParameter("@Name1","a"),
  131. new SugarParameter("@Id2",1),
  132. new SugarParameter("@Name3","a1")
  133. }, "WhereMultiple2");
  134. }
  135. private void whereSingle1()
  136. {
  137. Expression<Func<Student, bool>> exp = it => it.Id > 1;
  138. ExpressionContext expContext = new ExpressionContext();
  139. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  140. var value = expContext.Result.GetString();
  141. var pars = expContext.Parameters;
  142. base.Check(value, pars, "( [Id] > @Id0 )", new List<SugarParameter>() {
  143. new SugarParameter("@Id0",1)
  144. }, "whereSingle1");
  145. }
  146. private void whereSingle2()
  147. {
  148. Expression<Func<Student, bool>> exp = it => 1 > it.Id;
  149. ExpressionContext expContext = new ExpressionContext();
  150. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  151. var value = expContext.Result.GetString();
  152. var pars = expContext.Parameters;
  153. base.Check(value, pars, "( @Id0 > [Id] )", new List<SugarParameter>() {
  154. new SugarParameter("@Id0",1)
  155. }, "whereSingle2");
  156. }
  157. private void whereSingle3()
  158. {
  159. Expression<Func<Student, bool>> exp = it => it.Id > 1 || it.Name == "a";
  160. ExpressionContext expContext = new ExpressionContext();
  161. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  162. var value = expContext.Result.GetString();
  163. var pars = expContext.Parameters;
  164. base.Check(value, pars, " (( [Id] > @Id0 ) OR ( [Name] = @Name1 ))", new List<SugarParameter>() {
  165. new SugarParameter("@Id0",1),
  166. new SugarParameter("@Name1","a")
  167. }, "whereSingle3");
  168. }
  169. private void whereSingle4()
  170. {
  171. Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != "a") || it.Name == "a1";
  172. ExpressionContext expContext = new ExpressionContext();
  173. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  174. var value = expContext.Result.GetString();
  175. var pars = expContext.Parameters;
  176. base.Check(value, pars, " ((( [Id] > @Id0 ) AND ( [Name] <> @Name1 )) OR ( [Name] = @Name2 )) ", new List<SugarParameter>() {
  177. new SugarParameter("@Id0",1),
  178. new SugarParameter("@Name1","a"),
  179. new SugarParameter("@Name2","a1")
  180. }, "whereSingle4");
  181. }
  182. private void whereSingle5()
  183. {
  184. string name = "a";
  185. WhereConst.name = "a1";
  186. Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name) || it.Name == WhereConst.name;
  187. ExpressionContext expContext = new ExpressionContext();
  188. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  189. var value = expContext.Result.GetString();
  190. var pars = expContext.Parameters;
  191. base.Check(value, pars, " ((( [Id] > @Id0 ) AND ( [Name] <> @Name1 )) OR ( [Name] = @Name2 )) ", new List<SugarParameter>() {
  192. new SugarParameter("@Id0",1),
  193. new SugarParameter("@Name1","a"),
  194. new SugarParameter("@Name2","a1")
  195. }, "whereSingle5");
  196. }
  197. private void whereSingle6()
  198. {
  199. string name = "a";
  200. WhereConst.name = "a1";
  201. Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name||it.Id==1) || it.Name == WhereConst.name;
  202. ExpressionContext expContext = new ExpressionContext();
  203. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  204. var value = expContext.Result.GetString();
  205. var pars = expContext.Parameters;
  206. base.Check(value, pars, " (((( [Id] > @Id0 ) AND ( [Name] <> @Name1 )) OR ( [Id] = @Id2 )) OR ( [Name] = @Name3 ))", new List<SugarParameter>() {
  207. new SugarParameter("@Id0",1),
  208. new SugarParameter("@Name1","a"),
  209. new SugarParameter("@Id2",1),
  210. new SugarParameter("@Name3","a1")
  211. }, "whereSingle6");
  212. }
  213. private void whereSingle7(Student st)
  214. {
  215. Expression<Func<Student, bool>> exp = it => it.Id > st.Id;
  216. ExpressionContext expContext = new ExpressionContext();
  217. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  218. var value = expContext.Result.GetString();
  219. var pars = expContext.Parameters;
  220. base.Check(value, pars, "( [Id] > @Id0 )", new List<SugarParameter>() {
  221. new SugarParameter("@Id0",1)
  222. }, "whereSingle7");
  223. }
  224. private void whereSingle8(Student st)
  225. {
  226. Expression<Func<Student, bool>> exp = it => it.Name == null;
  227. ExpressionContext expContext = new ExpressionContext();
  228. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  229. var value = expContext.Result.GetString();
  230. var pars = expContext.Parameters;
  231. base.Check(value, pars, "( [Name] IS NULL )", new List<SugarParameter>() {
  232. }, "whereSingle8");
  233. }
  234. private void whereSingle9(Student st)
  235. {
  236. Expression<Func<Student, bool>> exp = it => it.Name == st.Name;
  237. ExpressionContext expContext = new ExpressionContext();
  238. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  239. var value = expContext.Result.GetString();
  240. var pars = expContext.Parameters;
  241. base.Check(value, pars, "( [Name] = @Name0 )", new List<SugarParameter>()
  242. {
  243. new SugarParameter("@Name0",null)
  244. }, "whereSingle9");
  245. }
  246. private void whereSingle10()
  247. {
  248. Expression<Func<Student, bool>> exp = it => true;
  249. ExpressionContext expContext = new ExpressionContext();
  250. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  251. var value = expContext.Result.GetString();
  252. var pars = expContext.Parameters;
  253. base.Check(value, pars, "( 1 = 1 )", new List<SugarParameter>()
  254. {
  255. }, "whereSingle10");
  256. }
  257. private void whereSingle11()
  258. {
  259. Expression<Func<Student, bool>> exp = it => !true;
  260. ExpressionContext expContext = new ExpressionContext();
  261. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  262. var value = expContext.Result.GetString();
  263. var pars = expContext.Parameters;
  264. base.Check(value, pars, "( 1 = 2 )", new List<SugarParameter>()
  265. {
  266. }, "whereSingle11");
  267. }
  268. private void whereSingle12()
  269. {
  270. Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool1==true;
  271. ExpressionContext expContext = new ExpressionContext();
  272. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  273. var value = expContext.Result.GetString();
  274. var pars = expContext.Parameters;
  275. base.Check(value, pars, "( [Bool1] = @Bool10 )", new List<SugarParameter>()
  276. {
  277. new SugarParameter("@Bool10",true)
  278. }, "whereSingle12");
  279. }
  280. private void whereSingle13()
  281. {
  282. Expression<Func<Student, bool>> exp = it => it.Name!=null;
  283. ExpressionContext expContext = new ExpressionContext();
  284. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  285. var value = expContext.Result.GetString();
  286. var pars = expContext.Parameters;
  287. base.Check(value, pars, "( [Name] IS NOT NULL )", new List<SugarParameter>()
  288. {
  289. }, "whereSingle13");
  290. }
  291. private void whereSingle14()
  292. {
  293. Expression<Func<Student, bool>> exp = it =>true&& it.Name != null;
  294. ExpressionContext expContext = new ExpressionContext();
  295. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  296. var value = expContext.Result.GetString();
  297. var pars = expContext.Parameters;
  298. base.Check(value, pars, "(( 1 = 1 ) AND( [Name] IS NOT NULL ))", new List<SugarParameter>()
  299. {
  300. }, "whereSingle14");
  301. }
  302. private void whereSingle15()
  303. {
  304. Expression<Func<DataTestInfo, bool>> exp = it =>it.Money2 == 1;
  305. ExpressionContext expContext = new ExpressionContext();
  306. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  307. var value = expContext.Result.GetString();
  308. var pars = expContext.Parameters;
  309. base.Check(value, pars, "( [Money2] = @Const0 )", new List<SugarParameter>()
  310. {
  311. new SugarParameter("@Const0",1)
  312. }, "whereSingle15");
  313. }
  314. private void whereSingle16()
  315. {
  316. Dictionary<string, string> dic = new Dictionary<string, string>();
  317. dic.Add("key", "x1");
  318. Expression<Func<DataTestInfo, bool>> exp = it => it.String == dic["key"];
  319. ExpressionContext expContext = new ExpressionContext();
  320. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  321. var value = expContext.Result.GetString();
  322. var pars = expContext.Parameters;
  323. base.Check(value, pars, "( [String] = @Const0 )", new List<SugarParameter>()
  324. {
  325. new SugarParameter("@Const0",dic["key"])
  326. }, "whereSingle16");
  327. }
  328. private void whereSingle17()
  329. {
  330. Expression<Func<DataTestInfo, bool>> exp = it =>true&&it.String.Contains("a");
  331. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  332. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  333. var value = expContext.Result.GetString();
  334. var pars = expContext.Parameters;
  335. base.Check(value, pars, "(( 1 = 1 ) AND ([String] like '%'+@MethodConst1+'%') )", new List<SugarParameter>()
  336. {
  337. new SugarParameter("@MethodConst1","a")
  338. }, "whereSingle17");
  339. }
  340. private void whereSingle18()
  341. {
  342. Expression<Func<DataTestInfo2, bool>> exp = it => !it.Bool1;
  343. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  344. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  345. var value = expContext.Result.GetString();
  346. var pars = expContext.Parameters;
  347. base.Check(value, pars, "NOT ( [Bool1]=1 ) ", new List<SugarParameter>()
  348. {
  349. }, "whereSingle18");
  350. }
  351. private void whereSingle19()
  352. {
  353. Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool2.Value==false;
  354. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  355. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  356. var value = expContext.Result.GetString();
  357. var pars = expContext.Parameters;
  358. base.Check(value, pars, "( [Bool2] = @Value0 )", new List<SugarParameter>()
  359. {
  360. new SugarParameter("@Value0",false)
  361. }, "whereSingle19");
  362. }
  363. private void whereSingle20()
  364. {
  365. Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool2.Value == it.Bool1;
  366. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  367. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  368. var value = expContext.Result.GetString();
  369. var pars = expContext.Parameters;
  370. base.Check(value, pars, "( [Bool2] = [Bool1] )", new List<SugarParameter>()
  371. {
  372. }, "whereSingle19");
  373. }
  374. private void whereSingle21()
  375. {
  376. Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool2.Value;
  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, "( [Bool2]=1 )", new List<SugarParameter>()
  382. {
  383. }, "whereSingle21");
  384. }
  385. private void whereSingle22()
  386. {
  387. Expression<Func<DataTestInfo2, bool>> exp = it => !it.Bool2.Value;
  388. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  389. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  390. var value = expContext.Result.GetString();
  391. var pars = expContext.Parameters;
  392. base.Check(value, pars, "NOT ( [Bool2]=1 ) ", new List<SugarParameter>()
  393. {
  394. }, "whereSingle22");
  395. }
  396. private void whereSingle23()
  397. {
  398. decimal? val = 1;
  399. Expression<Func<DataTestInfo, bool>> exp = it => it.Decimal2==val.Value;
  400. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  401. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  402. var value = expContext.Result.GetString();
  403. var pars = expContext.Parameters;
  404. base.Check(value, pars, "( [Decimal2] = @Const0 )", new List<SugarParameter>()
  405. {
  406. new SugarParameter("@Const0",val)
  407. }, "whereSingle23");
  408. }
  409. private void whereSingle24()
  410. {
  411. Expression<Func<DataTestInfo, bool>> exp = it => it.Datetime1 > DateTime.Now.Date;
  412. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  413. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  414. var value = expContext.Result.GetString();
  415. var pars = expContext.Parameters;
  416. base.Check(value, pars, "( [Datetime1] > @Datetime10 )", new List<SugarParameter>()
  417. {
  418. new SugarParameter("@Datetime10",DateTime.Now.Date)
  419. }, "whereSingle24");
  420. }
  421. private void whereSingle26()
  422. {
  423. var p = DateTime.Now;
  424. Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool1&&it.Bool1;
  425. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  426. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  427. var value = expContext.Result.GetString();
  428. var pars = expContext.Parameters;
  429. base.Check(value, pars, "( ( [Bool1]=1 ) AND ( [Bool1]=1 ) )", new List<SugarParameter>()
  430. {
  431. }, "whereSingle26");
  432. }
  433. private void whereSingle25()
  434. {
  435. var p = DateTime.Now;
  436. Expression<Func<DataTestInfo, bool>> exp = it => it.Datetime1.Date > p.Date;
  437. SqlServerExpressionContext expContext = new SqlServerExpressionContext();
  438. expContext.Resolve(exp, ResolveExpressType.WhereSingle);
  439. var value = expContext.Result.GetString();
  440. var pars = expContext.Parameters;
  441. base.Check(value, pars, "( CAST( DateName(Year,[Datetime1]) +'-'+ DateName(Month,[Datetime1]) +'-'+ DateName(Day,[Datetime1]) AS DATETIME) > @Date0 )", new List<SugarParameter>()
  442. {
  443. new SugarParameter("@Date0",DateTime.Now.Date),
  444. }, "whereSingle25");
  445. }
  446. public static WhereConst wc = new WhereConst() { name2 = "a" };
  447. }
  448. public class WhereConst
  449. {
  450. public static string name { get; set; }
  451. public string name2 { get; set; }
  452. }
  453. }