using Numbers.NumberFactory; namespace Numbers.Test.NumberFactory; public sealed class OddNumberTests { [Fact] public void LowerBound() { const long LowerBound = 4; var numbers = Factory.Create(NumberType.Odd, LowerBound, 10); numbers.LowerBound.Should().Be(LowerBound); } [Fact] public void UpperBound() { const long UpperBound = 10; var numbers = Factory.Create(NumberType.Odd, 4, UpperBound); numbers.UpperBound.Should().Be(UpperBound); } [Fact] public void Count() { var numbers = Factory.Create(NumberType.Odd, 4, 10); numbers.Length.Should().Be(3, "5, 7, 9"); } [Fact] public void FirstIndex() { var numbers = Factory.Create(NumberType.Odd, 4, 10); numbers[0].Should().Be(5); } [Fact] public void LastIndex() { var numbers = Factory.Create(NumberType.Odd, 4, 10); numbers[^1].Should().Be(9); } [Theory] [InlineData(NumberType.Odd, 4, 10, new long[] { 5, 7, 9 })] [InlineData(NumberType.Odd, 3, 10, new long[] { 3, 5, 7, 9 })] [InlineData(NumberType.Odd, 4, 11, new long[] { 5, 7, 9, 11 })] 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 = [5, 7, 9]; var numbers = Factory.Create(NumberType.Odd, 4, 10); foreach (long item in numbers) { i++; item.Should().Be(expected[i]); } } }