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.

LuExpressionUtilsTests.cs 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using System.Linq;
  2. using Luticate2.Auth.Business;
  3. using Xunit;
  4. namespace Luticate2.Auth.Tests.Business
  5. {
  6. public class TestDbo1
  7. {
  8. public string MyString { get; set; }
  9. public TestDbo2 TestDbo2 { get; set; }
  10. }
  11. public class TestDbo2
  12. {
  13. public string MyOtherString { get; set; }
  14. public int MyInt { get; set; }
  15. public TestDbo2 RecursiveObject { get; set; }
  16. }
  17. public class LuExpressionUtilsTests
  18. {
  19. [Fact]
  20. public void GetSingleMemberFromExpression1()
  21. {
  22. var memberInfo = LuExpressionUtils.GetSingleMemberFromExpression<TestDbo1, string>(x => x.MyString);
  23. Assert.NotNull(memberInfo);
  24. Assert.Equal("MyString", memberInfo.Name);
  25. }
  26. [Fact]
  27. public void GetSingleMemberFromExpression2()
  28. {
  29. var memberInfo = LuExpressionUtils.GetSingleMemberFromExpression<TestDbo1, TestDbo2>(x => x.TestDbo2);
  30. Assert.NotNull(memberInfo);
  31. Assert.Equal("TestDbo2", memberInfo.Name);
  32. }
  33. [Fact]
  34. public void GetSingleMemberFromExpression3()
  35. {
  36. var memberInfo = LuExpressionUtils.GetSingleMemberFromExpression<TestDbo1, TestDbo1>(x => x);
  37. Assert.Null(memberInfo);
  38. }
  39. [Fact]
  40. public void GetSingleMemberFromExpression4()
  41. {
  42. var memberInfo = LuExpressionUtils.GetSingleMemberFromExpression<TestDbo1, int>(x => 42);
  43. Assert.Null(memberInfo);
  44. }
  45. [Fact]
  46. public void GetSingleMemberFromExpression5()
  47. {
  48. var memberInfo = LuExpressionUtils.GetSingleMemberFromExpression<TestDbo1, int>(x => x.TestDbo2.MyInt);
  49. Assert.Null(memberInfo);
  50. }
  51. [Fact]
  52. public void GetSingleMemberFromExpression6()
  53. {
  54. var memberInfo = LuExpressionUtils.GetSingleMemberFromExpression<TestDbo1, int>(x => x.TestDbo2.RecursiveObject.MyInt);
  55. Assert.Null(memberInfo);
  56. }
  57. [Fact]
  58. public void GetMembersFromExpression1()
  59. {
  60. var memberInfo = LuExpressionUtils.GetMembersFromExpression<TestDbo1, string>(x => x.MyString);
  61. Assert.NotNull(memberInfo);
  62. var memberInfosString = string.Join(".", memberInfo.Select(x => x.Name));
  63. Assert.Equal("MyString", memberInfosString);
  64. }
  65. [Fact]
  66. public void GetMembersFromExpression2()
  67. {
  68. var memberInfo = LuExpressionUtils.GetMembersFromExpression<TestDbo1, TestDbo2>(x => x.TestDbo2);
  69. Assert.NotNull(memberInfo);
  70. var memberInfosString = string.Join(".", memberInfo.Select(x => x.Name));
  71. Assert.Equal("TestDbo2", memberInfosString);
  72. }
  73. [Fact]
  74. public void GetMembersFromExpression3()
  75. {
  76. var memberInfo = LuExpressionUtils.GetMembersFromExpression<TestDbo1, TestDbo1>(x => x);
  77. Assert.Null(memberInfo);
  78. }
  79. [Fact]
  80. public void GetMembersFromExpression4()
  81. {
  82. var memberInfo = LuExpressionUtils.GetMembersFromExpression<TestDbo1, int>(x => 42);
  83. Assert.Null(memberInfo);
  84. }
  85. [Fact]
  86. public void GetMembersFromExpression5()
  87. {
  88. var memberInfo = LuExpressionUtils.GetMembersFromExpression<TestDbo1, int>(x => x.TestDbo2.MyInt);
  89. Assert.NotNull(memberInfo);
  90. var memberInfosString = string.Join(".", memberInfo.Select(x => x.Name));
  91. Assert.Equal("TestDbo2.MyInt", memberInfosString);
  92. }
  93. [Fact]
  94. public void GetMembersFromExpression6()
  95. {
  96. var memberInfo = LuExpressionUtils.GetMembersFromExpression<TestDbo1, int>(x => x.TestDbo2.RecursiveObject.MyInt);
  97. Assert.NotNull(memberInfo);
  98. var memberInfosString = string.Join(".", memberInfo.Select(x => x.Name));
  99. Assert.Equal("TestDbo2.RecursiveObject.MyInt", memberInfosString);
  100. }
  101. }
  102. }