Initial commit

This commit is contained in:
github-classroom[bot] 2025-04-29 15:03:45 +00:00 committed by GitHub
commit b087f272b4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 5345 additions and 0 deletions

View file

@ -0,0 +1,76 @@
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]);
}
}
}

View file

@ -0,0 +1,18 @@
using Numbers.NumberFactory;
using Numbers.NumberFactory.NumberImpls;
namespace Numbers.Test.NumberFactory;
public sealed class FactoryTests
{
[Theory]
[InlineData(NumberType.Even, typeof(EvenNumbers))]
[InlineData(NumberType.Odd, typeof(OddNumbers))]
[InlineData(NumberType.Square, typeof(SquareNumbers))]
[InlineData(NumberType.Prime, typeof(PrimeNumbers))]
public void Create(NumberType type, Type expectedType)
{
Factory.Create(type, 0, 10)
.Should().BeOfType(expectedType);
}
}

View file

@ -0,0 +1,49 @@
using Numbers.NumberFactory;
namespace Numbers.Test.NumberFactory;
public sealed class NumbersEnumeratorTests
{
private readonly NumbersEnumerator _enumerator = new([1, 2, 3]);
[Fact]
public void MoveNext_StopWhenExhausted()
{
_enumerator.MoveNext().Should().BeTrue();
_enumerator.MoveNext().Should().BeTrue();
_enumerator.MoveNext().Should().BeTrue();
_enumerator.MoveNext().Should().BeFalse();
}
[Fact]
public void MoveNext_Simple()
{
_enumerator.MoveNext().Should().BeTrue("can move");
}
[Fact]
public void Current()
{
_enumerator.MoveNext();
_enumerator.Current.Should().Be(1);
_enumerator.MoveNext();
_enumerator.Current.Should().Be(2);
_enumerator.MoveNext();
_enumerator.Current.Should().Be(3);
}
[Fact]
public void Reset()
{
_enumerator.MoveNext();
_enumerator.MoveNext();
_enumerator.Reset();
_enumerator.Current.Should().Be(-1);
_enumerator.MoveNext();
_enumerator.Current.Should().Be(1);
}
}

View file

@ -0,0 +1,76 @@
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]);
}
}
}

View file

@ -0,0 +1,91 @@
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]);
}
}
}

View file

@ -0,0 +1,76 @@
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]);
}
}
}