MinItemsCountAttributeTests.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System.Collections.Generic;
  2. using Masuit.Tools.Core.Validator;
  3. using Xunit;
  4. namespace Masuit.Tools.Abstractions.Test.Validator;
  5. public class MinItemsCountAttributeTests
  6. {
  7. [Theory]
  8. [InlineData(null, false)]
  9. [InlineData(new int[] { }, false)]
  10. [InlineData(new int[] { 1 }, true)]
  11. [InlineData(new int[] { 1, 2 }, true)]
  12. [InlineData(new int[] { 1, 2, 3 }, true)]
  13. public void IsValid_ShouldValidateMinItemsCount_Array(IEnumerable<int> value, bool expected)
  14. {
  15. // Arrange
  16. var attribute = new MinItemsCountAttribute(1);
  17. // Act
  18. var result = attribute.IsValid(value);
  19. // Assert
  20. Assert.Equal(expected, result);
  21. }
  22. [Fact]
  23. public void IsValid_ShouldReturnFalse_WhenValueIsNull()
  24. {
  25. // Arrange
  26. var attribute = new MinItemsCountAttribute(1);
  27. // Act
  28. var result = attribute.IsValid(null);
  29. // Assert
  30. Assert.False(result);
  31. }
  32. [Fact]
  33. public void IsValid_ShouldReturnFalse_WhenCollectionCountIsLessThanMinItems()
  34. {
  35. // Arrange
  36. var attribute = new MinItemsCountAttribute(3);
  37. var collection = new List<int> { 1, 2 };
  38. // Act
  39. var result = attribute.IsValid(collection);
  40. // Assert
  41. Assert.False(result);
  42. }
  43. [Fact]
  44. public void IsValid_ShouldReturnTrue_WhenCollectionCountIsGreaterThanOrEqualToMinItems()
  45. {
  46. // Arrange
  47. var attribute = new MinItemsCountAttribute(2);
  48. var collection = new List<int> { 1, 2, 3 };
  49. // Act
  50. var result = attribute.IsValid(collection);
  51. // Assert
  52. Assert.True(result);
  53. }
  54. [Fact]
  55. public void IsValid_ShouldReturnTrue_WhenEnumerableCountIsGreaterThanOrEqualToMinItems()
  56. {
  57. // Arrange
  58. var attribute = new MinItemsCountAttribute(2);
  59. var enumerable = GetEnumerable(3);
  60. // Act
  61. var result = attribute.IsValid(enumerable);
  62. // Assert
  63. Assert.True(result);
  64. }
  65. [Fact]
  66. public void IsValid_ShouldReturnFalse_WhenEnumerableCountIsLessThanMinItems()
  67. {
  68. // Arrange
  69. var attribute = new MinItemsCountAttribute(3);
  70. var enumerable = GetEnumerable(2);
  71. // Act
  72. var result = attribute.IsValid(enumerable);
  73. // Assert
  74. Assert.False(result);
  75. }
  76. private IEnumerable<int> GetEnumerable(int count)
  77. {
  78. for (int i = 0; i < count; i++)
  79. {
  80. yield return i;
  81. }
  82. }
  83. }