Initial commit
This commit is contained in:
commit
b087f272b4
26 changed files with 5345 additions and 0 deletions
76
Numbers.Test/NumberFactory/EvenNumbersTests.cs
Normal file
76
Numbers.Test/NumberFactory/EvenNumbersTests.cs
Normal 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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Numbers.Test/NumberFactory/FactoryTests.cs
Normal file
18
Numbers.Test/NumberFactory/FactoryTests.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
49
Numbers.Test/NumberFactory/NumbersEnumeratorTests.cs
Normal file
49
Numbers.Test/NumberFactory/NumbersEnumeratorTests.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
76
Numbers.Test/NumberFactory/OddNumberTests.cs
Normal file
76
Numbers.Test/NumberFactory/OddNumberTests.cs
Normal 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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
91
Numbers.Test/NumberFactory/PrimeNumbersTests.cs
Normal file
91
Numbers.Test/NumberFactory/PrimeNumbersTests.cs
Normal 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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
76
Numbers.Test/NumberFactory/SquareNumbersTests.cs
Normal file
76
Numbers.Test/NumberFactory/SquareNumbersTests.cs
Normal 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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue