81 lines
2.2 KiB
C#
81 lines
2.2 KiB
C#
using System.Collections;
|
|
|
|
namespace DigitSequence.Test;
|
|
|
|
public sealed class DigitsTests
|
|
{
|
|
[Fact]
|
|
public void NegativeValue()
|
|
{
|
|
var digits = new Digits(-350);
|
|
digits.ToString().Should().Be("350", "negative numbers are turned into positive");
|
|
}
|
|
|
|
[Fact]
|
|
public void Enumeration()
|
|
{
|
|
var digits = new Digits(220056010);
|
|
int[] digitsArray = [2, 2, 0, 0, 5, 6, 0, 1, 0];
|
|
|
|
digits.Should<Digits>().BeAssignableTo<IEnumerable<int>>();
|
|
|
|
var idx = 0;
|
|
foreach (int digit in digits)
|
|
{
|
|
digit.Should().Be(digitsArray[idx++]);
|
|
}
|
|
|
|
IEnumerator<int> enumerator1 = digits.GetEnumerator();
|
|
enumerator1.Should().BeOfType<DigitEnumerator>();
|
|
enumerator1.Dispose();
|
|
|
|
var enumerator2 = (digits as IEnumerable).GetEnumerator();
|
|
enumerator2.Should()
|
|
.NotBeNull()
|
|
.And.BeOfType<DigitEnumerator>();
|
|
((IDisposable) enumerator2).Dispose();
|
|
}
|
|
|
|
[Fact]
|
|
public void Comparison()
|
|
{
|
|
var a = new Digits(890);
|
|
var b = new Digits(891);
|
|
var c = new Digits(890);
|
|
|
|
a.Should<Digits>().BeAssignableTo<IComparable<Digits>>();
|
|
|
|
a.CompareTo(b).Should().BeLessThan(0);
|
|
b.CompareTo(a).Should().BeGreaterThan(0);
|
|
a.CompareTo(a).Should().Be(0);
|
|
b.CompareTo(b).Should().Be(0);
|
|
a.CompareTo(c).Should().Be(0);
|
|
c.CompareTo(a).Should().Be(0);
|
|
a.CompareTo(null).Should().BeGreaterThan(0);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(123, "123")]
|
|
[InlineData(321, "321")]
|
|
[InlineData(-45, "45")]
|
|
[InlineData(01, "1")]
|
|
[InlineData(10, "10")]
|
|
public void StringRepresentation(int number, string expected)
|
|
{
|
|
var digits = new Digits(number);
|
|
digits.ToString().Should().Be(expected);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetEnumerator_NotShared()
|
|
{
|
|
var digits = new Digits(123);
|
|
|
|
IEnumerator<int> enumerator1 = digits.GetEnumerator();
|
|
IEnumerator<int> enumerator2 = digits.GetEnumerator();
|
|
enumerator1.Should()
|
|
.NotBeSameAs(enumerator2, "for each iteration a new enumerator is created");
|
|
enumerator1.Dispose();
|
|
enumerator2.Dispose();
|
|
}
|
|
}
|