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