LinqExtensionTests.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using System;
  2. using System.Linq.Expressions;
  3. using Masuit.Tools.Linq;
  4. using Xunit;
  5. namespace Masuit.Tools.Abstractions.Test.Linq;
  6. public class LinqExtensionTests
  7. {
  8. [Fact]
  9. public void And_ShouldCombineExpressionsWithAnd()
  10. {
  11. Expression<Func<int, bool>> expr1 = x => x > 5;
  12. Expression<Func<int, bool>> expr2 = x => x < 10;
  13. var combined = expr1.And(expr2);
  14. Assert.True(combined.Compile()(7));
  15. Assert.False(combined.Compile()(4));
  16. Assert.False(combined.Compile()(11));
  17. }
  18. [Fact]
  19. public void AndIf_ShouldCombineExpressionsWithAndIfConditionIsTrue()
  20. {
  21. Expression<Func<int, bool>> expr1 = x => x > 5;
  22. Expression<Func<int, bool>> expr2 = x => x < 10;
  23. var combined = expr1.AndIf(true, expr2);
  24. Assert.True(combined.Compile()(7));
  25. Assert.False(combined.Compile()(4));
  26. Assert.False(combined.Compile()(11));
  27. }
  28. [Fact]
  29. public void AndIf_ShouldNotCombineExpressionsWithAndIfConditionIsFalse()
  30. {
  31. Expression<Func<int, bool>> expr1 = x => x > 5;
  32. Expression<Func<int, bool>> expr2 = x => x < 10;
  33. var combined = expr1.AndIf(false, expr2);
  34. Assert.True(combined.Compile()(7));
  35. Assert.True(combined.Compile()(11));
  36. }
  37. [Fact]
  38. public void AndIf_WithFuncCondition_ShouldCombineExpressionsWithAndIfConditionIsTrue()
  39. {
  40. Expression<Func<int, bool>> expr1 = x => x > 5;
  41. Expression<Func<int, bool>> expr2 = x => x < 10;
  42. var combined = expr1.AndIf(() => true, expr2);
  43. Assert.True(combined.Compile()(7));
  44. Assert.False(combined.Compile()(4));
  45. Assert.False(combined.Compile()(11));
  46. }
  47. [Fact]
  48. public void AndIf_WithFuncCondition_ShouldNotCombineExpressionsWithAndIfConditionIsFalse()
  49. {
  50. Expression<Func<int, bool>> expr1 = x => x > 5;
  51. Expression<Func<int, bool>> expr2 = x => x < 10;
  52. var combined = expr1.AndIf(() => false, expr2);
  53. Assert.True(combined.Compile()(7));
  54. Assert.True(combined.Compile()(11));
  55. }
  56. [Fact]
  57. public void Or_ShouldCombineExpressionsWithOr()
  58. {
  59. Expression<Func<int, bool>> expr1 = x => x > 5;
  60. Expression<Func<int, bool>> expr2 = x => x < 10;
  61. var combined = expr1.Or(expr2);
  62. Assert.True(combined.Compile()(7));
  63. Assert.True(combined.Compile()(4));
  64. Assert.True(combined.Compile()(11));
  65. }
  66. [Fact]
  67. public void OrIf_ShouldCombineExpressionsWithOrIfConditionIsTrue()
  68. {
  69. Expression<Func<int, bool>> expr1 = x => x > 5;
  70. Expression<Func<int, bool>> expr2 = x => x < 10;
  71. var combined = expr1.OrIf(true, expr2);
  72. Assert.True(combined.Compile()(7));
  73. Assert.True(combined.Compile()(4));
  74. Assert.True(combined.Compile()(11));
  75. }
  76. [Fact]
  77. public void OrIf_ShouldNotCombineExpressionsWithOrIfConditionIsFalse()
  78. {
  79. Expression<Func<int, bool>> expr1 = x => x > 5;
  80. Expression<Func<int, bool>> expr2 = x => x < 10;
  81. var combined = expr1.OrIf(false, expr2);
  82. Assert.True(combined.Compile()(7));
  83. Assert.False(combined.Compile()(4));
  84. Assert.True(combined.Compile()(11));
  85. }
  86. [Fact]
  87. public void OrIf_WithFuncCondition_ShouldCombineExpressionsWithOrIfConditionIsTrue()
  88. {
  89. Expression<Func<int, bool>> expr1 = x => x > 5;
  90. Expression<Func<int, bool>> expr2 = x => x < 10;
  91. var combined = expr1.OrIf(() => true, expr2);
  92. Assert.True(combined.Compile()(7));
  93. Assert.True(combined.Compile()(4));
  94. Assert.True(combined.Compile()(11));
  95. }
  96. [Fact]
  97. public void OrIf_WithFuncCondition_ShouldNotCombineExpressionsWithOrIfConditionIsFalse()
  98. {
  99. Expression<Func<int, bool>> expr1 = x => x > 5;
  100. Expression<Func<int, bool>> expr2 = x => x < 10;
  101. var combined = expr1.OrIf(() => false, expr2);
  102. Assert.True(combined.Compile()(7));
  103. Assert.False(combined.Compile()(4));
  104. Assert.True(combined.Compile()(11));
  105. }
  106. }