Query_Method_Test.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. using System.Data;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using Vit.Linq;
  4. namespace Vitorm.MsTest.CustomTest
  5. {
  6. [TestClass]
  7. public class Query_Method_Test
  8. {
  9. [TestMethod]
  10. public async Task ToListAsync()
  11. {
  12. using var dbContext = DataSource.CreateDbContext();
  13. var userQuery = dbContext.Query<User>();
  14. // PlainQuery
  15. {
  16. var list = await userQuery.OrderBy(m => m.fatherId).Select(m => new { fatherId = m.fatherId }).ToListAsync();
  17. var ids = String.Join(',', list.Select(m => m.fatherId));
  18. Assert.AreEqual(",,,4,4,5", ids);
  19. }
  20. // Group
  21. {
  22. var list = await userQuery.GroupBy(m => m.fatherId).OrderBy(g => g.Key).Select(g => new { fatherId = g.Key }).ToListAsync();
  23. var ids = String.Join(',', list.Select(m => m.fatherId));
  24. Assert.AreEqual(",4,5", ids);
  25. }
  26. // PlainDistinctSearch
  27. {
  28. var list = await userQuery.Select(m => new { fatherId = m.fatherId }).OrderBy(m => m.fatherId).Distinct().ToListAsync();
  29. var ids = String.Join(',', list.Select(m => m.fatherId));
  30. Assert.AreEqual(",4,5", ids);
  31. }
  32. }
  33. [TestMethod]
  34. public void ToList()
  35. {
  36. using var dbContext = DataSource.CreateDbContext();
  37. var userQuery = dbContext.Query<User>();
  38. // PlainQuery
  39. {
  40. var list = userQuery.OrderBy(m => m.fatherId).Select(m => new { fatherId = m.fatherId }).ToList();
  41. var ids = String.Join(',', list.Select(m => m.fatherId));
  42. Assert.AreEqual(",,,4,4,5", ids);
  43. }
  44. // Group
  45. {
  46. var list = userQuery.GroupBy(m => m.fatherId).OrderBy(g => g.Key).Select(g => new { fatherId = g.Key }).ToList();
  47. var ids = String.Join(',', list.Select(m => m.fatherId));
  48. Assert.AreEqual(",4,5", ids);
  49. }
  50. // PlainDistinctSearch
  51. {
  52. var list = userQuery.Select(m => new { fatherId = m.fatherId }).OrderBy(m => m.fatherId).Distinct().ToList();
  53. var ids = String.Join(',', list.Select(m => m.fatherId));
  54. Assert.AreEqual(",4,5", ids);
  55. }
  56. }
  57. [TestMethod]
  58. public void Count()
  59. {
  60. using var dbContext = DataSource.CreateDbContext();
  61. var userQuery = dbContext.Query<User>();
  62. // PlainQuery
  63. {
  64. var count = userQuery.OrderBy(m => m.fatherId).Select(m => new { fatherId = m.fatherId }).Count();
  65. Assert.AreEqual(6, count);
  66. }
  67. // Group
  68. {
  69. var count = userQuery.GroupBy(m => m.fatherId).OrderBy(g => g.Key).Select(g => new { fatherId = g.Key }).Count();
  70. Assert.AreEqual(3, count);
  71. }
  72. // PlainDistinctSearch
  73. {
  74. var count = userQuery.Select(m => new { fatherId = m.fatherId }).OrderBy(m => m.fatherId).Distinct().Count();
  75. Assert.AreEqual(3, count);
  76. }
  77. }
  78. [TestMethod]
  79. public void ToExecuteString()
  80. {
  81. using var dbContext = DataSource.CreateDbContext();
  82. var userQuery = dbContext.Query<User>();
  83. // PlainQuery
  84. {
  85. var executeString = userQuery.OrderBy(m => m.fatherId).Select(m => new { fatherId = m.fatherId }).ToExecuteString();
  86. Assert.IsNotNull(executeString);
  87. }
  88. // Group
  89. {
  90. var executeString = userQuery.GroupBy(m => m.fatherId).OrderBy(g => g.Key).Select(g => new { fatherId = g.Key }).ToExecuteString();
  91. Assert.IsNotNull(executeString);
  92. }
  93. // PlainDistinctSearch
  94. {
  95. var executeString = userQuery.Select(m => new { fatherId = m.fatherId }).OrderBy(m => m.fatherId).Distinct().ToExecuteString();
  96. Assert.IsNotNull(executeString);
  97. }
  98. }
  99. [TestMethod]
  100. public void FirstOrDefault()
  101. {
  102. using var dbContext = DataSource.CreateDbContext();
  103. var userQuery = dbContext.Query<User>();
  104. // PlainQuery
  105. {
  106. var item = userQuery.Where(m => m.fatherId != null).OrderBy(m => m.fatherId).Select(m => new { fatherId = m.fatherId }).FirstOrDefault();
  107. Assert.AreEqual(4, item.fatherId);
  108. }
  109. // Group
  110. {
  111. var item = userQuery.Where(m => m.fatherId != null).GroupBy(m => m.fatherId).OrderBy(g => g.Key).Select(g => new { fatherId = g.Key }).FirstOrDefault();
  112. Assert.AreEqual(4, item.fatherId);
  113. }
  114. // PlainDistinctSearch
  115. {
  116. var item = userQuery.Where(m => m.fatherId != null).Select(m => new { fatherId = m.fatherId }).OrderBy(m => m.fatherId).Distinct().FirstOrDefault();
  117. Assert.AreEqual(4, item.fatherId);
  118. }
  119. }
  120. [TestMethod]
  121. public void LastOrDefault()
  122. {
  123. using var dbContext = DataSource.CreateDbContext();
  124. var userQuery = dbContext.Query<User>();
  125. // PlainQuery
  126. {
  127. var item = userQuery.Where(m => m.fatherId != null).OrderBy(m => m.fatherId).Select(m => new { fatherId = m.fatherId }).LastOrDefault();
  128. Assert.AreEqual(5, item.fatherId);
  129. }
  130. // Group
  131. {
  132. var item = userQuery.Where(m => m.fatherId != null).GroupBy(m => m.fatherId).OrderBy(g => g.Key).Select(g => new { fatherId = g.Key }).LastOrDefault();
  133. Assert.AreEqual(5, item.fatherId);
  134. }
  135. // PlainDistinctSearch
  136. {
  137. var item = userQuery.Where(m => m.fatherId != null).Select(m => new { fatherId = m.fatherId }).OrderBy(m => m.fatherId).Distinct().LastOrDefault();
  138. Assert.AreEqual(5, item.fatherId);
  139. }
  140. }
  141. }
  142. }