using Numbers.NumberFactory; namespace Numbers.Test.NumberFactory; public sealed class EvenNumbersTests { [Fact] public void LowerBound() { const long LowerBound = 3; var numbers = Factory.Create(NumberType.Even, LowerBound, 9); numbers.LowerBound.Should().Be(LowerBound); } [Fact] public void UpperBound() { const long UpperBound = 9; var numbers = Factory.Create(NumberType.Even, 3, UpperBound); numbers.UpperBound.Should().Be(UpperBound); } [Fact] public void Count() { var numbers = Factory.Create(NumberType.Even, 3, 11); numbers.Length.Should().Be(4, "4, 6, 8, 10"); } [Fact] public void FirstIndex() { var numbers = Factory.Create(NumberType.Even, 3, 9); numbers[0].Should().Be(4); } [Fact] public void LastIndex() { var numbers = Factory.Create(NumberType.Even, 3, 9); numbers[^1].Should().Be(8); } [Theory] [InlineData(NumberType.Even, 3, 9, new long[] { 4, 6, 8 })] [InlineData(NumberType.Even, 2, 9, new long[] { 2, 4, 6, 8 })] [InlineData(NumberType.Even, 3, 10, new long[] { 4, 6, 8, 10 })] public void Content(NumberType type, long lower, long upper, long[] expected) { var numbers = Factory.Create(type, lower, upper); for (var i = 0; i < numbers.Length; i++) { numbers[i].Should().Be(expected[i]); } } [Fact] public void ForeachContent() { int i = -1; long[] expected = [4, 6, 8]; var numbers = Factory.Create(NumberType.Even, 3, 9); foreach (long item in numbers) { i++; item.Should().Be(expected[i]); } } }