ex-int-01-digits/DigitSequence.Test/DigitsTests.cs
github-classroom[bot] 4dda0d330c
Initial commit
2025-04-06 10:48:47 +00:00

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();
}
}