using Numbers.NumberFactory; namespace Numbers.Test.NumberFactory; public sealed class PrimeNumbersTests { [Fact] public void LowerBound() { const long LowerBound = 0; var numbers = Factory.Create(NumberType.Prime, LowerBound, 10); numbers.LowerBound.Should().Be(LowerBound); } [Fact] public void UpperBound() { const long UpperBound = 10; var numbers = Factory.Create(NumberType.Prime, 0, UpperBound); numbers.UpperBound.Should().Be(UpperBound); } [Fact] public void Count() { var numbers = Factory.Create(NumberType.Prime, 0, 10); numbers.Length.Should().Be(4, "2, 3, 5, 7"); } [Fact] public void FirstIndex() { var numbers = Factory.Create(NumberType.Prime, 0, 10); numbers[0].Should().Be(2); } [Fact] public void LastIndex() { var numbers = Factory.Create(NumberType.Prime, 0, 10); numbers[^1].Should().Be(7); } [Theory] [InlineData(NumberType.Prime, 0, 10, new long[] { 2, 3, 5, 7 })] [InlineData(NumberType.Prime, 2, 10, new long[] { 2, 3, 5, 7 })] [InlineData(NumberType.Prime, 0, 7, new long[] { 2, 3, 5, 7 })] 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 = [2, 3, 5, 7]; var numbers = Factory.Create(NumberType.Prime, 0, 10); foreach (long item in numbers) { i++; item.Should().Be(expected[i]); } } [Fact] public void ForeachContentExtended() { int i = -1; long[] expected = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]; var numbers = Factory.Create(NumberType.Prime, 0, 100); foreach (long item in numbers) { i++; item.Should().Be(expected[i]); } } }