Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

RandomTests.cs 7.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. using System;
  2. using System.Linq;
  3. using System.Linq.Expressions;
  4. using Luticate2.Auth.Business.Fields;
  5. using Luticate2.Auth.Business.Fields.DMEC;
  6. using Luticate2.Auth.Interfaces;
  7. using Luticate2.Auth.Tests.Business.Fields;
  8. using Microsoft.Extensions.DependencyInjection;
  9. using Microsoft.Extensions.DependencyInjection.Extensions;
  10. using Xunit;
  11. namespace Luticate2.Auth.Tests
  12. {
  13. public class RandomTests
  14. {
  15. // [Fact]
  16. // public void Test1()
  17. // {
  18. // var dbContext = new luticate2Context();
  19. // var items = dbContext.LuGroups.Where(groups => groups.LuGroupsObjects.Any(x => x.Priority == 0));
  20. // var list = items.ToList();
  21. // Assert.NotNull(list);
  22. // Assert.Equal(1, list.Count);
  23. // }
  24. //
  25. // [Fact]
  26. // public void Test2()
  27. // {
  28. // var dbContext = new luticate2Context();
  29. // var items = dbContext.LuGroups.OrderBy(x => x.Id).Where(groups => groups.LuGroupsObjects.Any(x => x.Priority == 0));
  30. // var list = items.ToList();
  31. // Assert.NotNull(list);
  32. // Assert.Equal(1, list.Count);
  33. // }
  34. //
  35. // [Fact]
  36. // public void Test3()
  37. // {
  38. // var dbContext = new luticate2Context();
  39. // var items = dbContext.LuGroups.OrderBy(x => x.Id);
  40. // var list = items.ToList();
  41. // Assert.NotNull(list);
  42. // Assert.Equal(2, list.Count);
  43. // }
  44. protected void AddILuExpressionConverter<TTypeFrom, TTypeTo, TTypeImpl>(IServiceCollection services)
  45. where TTypeImpl : class, ILuExpressionConverter<TTypeFrom, TTypeTo>
  46. {
  47. services.AddSingleton<ILuExpressionConverter<TTypeFrom, TTypeTo>, TTypeImpl>();
  48. services.TryAddSingleton<ILuExpressionConverter<TTypeFrom>, TTypeImpl>();
  49. }
  50. protected IServiceProvider GetServiceProvider()
  51. {
  52. var services = new ServiceCollection();
  53. services.AddSingleton<LuExpressionConverterEnumerable>();
  54. AddILuExpressionConverter<TestDbo1, TestModel1, LuDMECTest1>(services);
  55. AddILuExpressionConverter<TestDbo2, TestModel2, LuDMECTest2>(services);
  56. AddILuExpressionConverter<LuExpressionConverterStaticMethods, LuExpressionConverterStaticMethods, LuExpressionConverterStaticMethods>(services);
  57. AddILuExpressionConverter<string, string, LuExpressionConverterIdentity<string>>(services);
  58. AddILuExpressionConverter<Guid, Guid, LuExpressionConverterIdentity<Guid>>(services);
  59. AddILuExpressionConverter<bool, bool, LuExpressionConverterIdentity<bool>>(services);
  60. var serviceProvider = services.BuildServiceProvider();
  61. return serviceProvider;
  62. }
  63. [Fact]
  64. public void Test4()
  65. {
  66. Expression<Func<TestDbo2, Guid>> expDbo = (x => x.TestDbo1.Id);
  67. Expression<Func<TestModel2, Guid>> expModel = (x => x.TestModel1.Id);
  68. var options = new LuExpressionConverterOptions
  69. {
  70. Parameter = Expression.Parameter(typeof(TestModel2), "x")
  71. };
  72. var converter = new LuExpressionConverterVisitor(options, GetServiceProvider());
  73. var result = converter.Visit(expDbo.Body);
  74. var lamdba = result != null ? Expression.Lambda<Func<TestModel2, Guid>>(result, options.Parameter) : null;
  75. Assert.Equal(expModel.ToString(), lamdba?.ToString());
  76. }
  77. [Fact]
  78. public void Test5()
  79. {
  80. Expression<Func<TestDbo2, int>> expDbo = (x => 0);
  81. Expression<Func<TestModel2, int>> expModel = (x => 0);
  82. var options = new LuExpressionConverterOptions
  83. {
  84. Parameter = Expression.Parameter(typeof(TestModel2), "x")
  85. };
  86. var converter = new LuExpressionConverterVisitor(options, GetServiceProvider());
  87. var result = converter.Visit(expDbo.Body);
  88. var lamdba = result != null ? Expression.Lambda<Func<TestModel2, int>>(result, options.Parameter) : null;
  89. Assert.Equal(expModel.ToString(), lamdba?.ToString());
  90. }
  91. [Fact]
  92. public void Test6()
  93. {
  94. Expression<Func<TestDbo2, bool>> expDbo = (x => x.Name.Contains("s"));
  95. Expression<Func<TestModel2, bool>> expModel = (x => x.Name.Contains("s"));
  96. var options = new LuExpressionConverterOptions
  97. {
  98. Parameter = Expression.Parameter(typeof(TestModel2), "x")
  99. };
  100. var converter = new LuExpressionConverterVisitor(options, GetServiceProvider());
  101. var result = converter.Visit(expDbo.Body);
  102. var lamdba = result != null ? Expression.Lambda<Func<TestModel2, bool>>(result, options.Parameter) : null;
  103. Assert.Equal(expModel.ToString(), lamdba?.ToString());
  104. }
  105. [Fact]
  106. public void Test7()
  107. {
  108. Expression<Func<TestDbo2, bool>> expDbo = (x => x.TestDbo1.Name.Contains("s"));
  109. Expression<Func<TestModel2, bool>> expModel = (x => x.TestModel1.Name.Contains("s"));
  110. var options = new LuExpressionConverterOptions
  111. {
  112. Parameter = Expression.Parameter(typeof(TestModel2), "x")
  113. };
  114. var converter = new LuExpressionConverterVisitor(options, GetServiceProvider());
  115. var result = converter.Visit(expDbo.Body);
  116. var lamdba = result != null ? Expression.Lambda<Func<TestModel2, bool>>(result, options.Parameter) : null;
  117. Assert.Equal(expModel.ToString(), lamdba?.ToString());
  118. }
  119. [Fact]
  120. public void Test8()
  121. {
  122. Expression<Func<TestDbo2, bool>> expDbo = (x => x.TestDbo1.Name.Contains(x.Name));
  123. Expression<Func<TestModel2, bool>> expModel = (x => x.TestModel1.Name.Contains(x.Name));
  124. var options = new LuExpressionConverterOptions
  125. {
  126. Parameter = Expression.Parameter(typeof(TestModel2), "x")
  127. };
  128. var converter = new LuExpressionConverterVisitor(options, GetServiceProvider());
  129. var result = converter.Visit(expDbo.Body);
  130. var lamdba = result != null ? Expression.Lambda<Func<TestModel2, bool>>(result, options.Parameter) : null;
  131. Assert.Equal(expModel.ToString(), lamdba?.ToString());
  132. }
  133. [Fact]
  134. public void Test9()
  135. {
  136. Expression<Func<TestDbo1, bool>> expDbo = (x => x.TestDbo2s.Any());
  137. Expression<Func<TestModel1, bool>> expModel = (x => x.TestModel2.Any());
  138. var options = new LuExpressionConverterOptions
  139. {
  140. Parameter = Expression.Parameter(typeof(TestModel1), "x")
  141. };
  142. var converter = new LuExpressionConverterVisitor(options, GetServiceProvider());
  143. var result = converter.Visit(expDbo.Body);
  144. var lamdba = result != null ? Expression.Lambda<Func<TestModel2, bool>>(result, options.Parameter) : null;
  145. Assert.Equal(expModel.ToString(), lamdba?.ToString());
  146. }
  147. [Fact]
  148. public void Test10()
  149. {
  150. Expression<Func<TestDbo1, bool>> expDbo = (x => x.TestDbo2s.Any(y => y.Name.Contains(x.Name + "s")));
  151. Expression<Func<TestModel1, bool>> expModel = (x => x.TestModel2.Any(y => y.Name.Contains(x.Name + "s")));
  152. var options = new LuExpressionConverterOptions
  153. {
  154. Parameter = Expression.Parameter(typeof(TestModel1), "x")
  155. };
  156. var converter = new LuExpressionConverterVisitor(options, GetServiceProvider());
  157. var result = converter.Visit(expDbo.Body);
  158. var lamdba = result != null ? Expression.Lambda<Func<TestModel2, bool>>(result, options.Parameter) : null;
  159. Assert.Equal(expModel.ToString(), lamdba?.ToString());
  160. }
  161. }
  162. }