ex-int-05-numbers/Numbers.Test/NumberString/NumberStringTests.cs
github-classroom[bot] b087f272b4
Initial commit
2025-04-29 15:03:45 +00:00

135 lines
3.7 KiB
C#

using System.Collections;
using Numbers.NumberString;
namespace Numbers.Test.NumberString;
using NumberString = Numbers.NumberString.NumberString;
public sealed class NumberStringTests
{
[Theory]
[InlineData("abc133", 133)]
[InlineData("4a2b3c", 423)]
[InlineData("1235abc", 1235)]
[InlineData("3ab2c", 32)]
[InlineData("abc", 0)]
public void NumericValue(string input, int expected)
{
var numberString = new NumberString(input);
numberString.NumericValue.Should().Be(expected);
}
[Fact]
public void Equals_Equal()
{
var numberString1 = new NumberString("abc123");
var numberString2 = new NumberString("1a2b3c");
numberString1.Should<NumberString>().Be(numberString2);
}
[Fact]
public void Equals_NotEqual()
{
var numberString1 = new NumberString("abc123");
var numberString2 = new NumberString("abc124");
numberString1.Should<NumberString>().NotBe(numberString2);
}
[Fact]
public void OperatorGreater()
{
var numberString1 = new NumberString("abc124");
var numberString2 = new NumberString("abc123");
(numberString1 > numberString2).Should().BeTrue();
}
[Fact]
public void OperatorLess()
{
var numberString1 = new NumberString("abc123");
var numberString2 = new NumberString("abc124");
(numberString1 < numberString2).Should().BeTrue();
}
[Fact]
public void CompareTo()
{
var numberString1 = new NumberString("abc123");
var numberString2 = new NumberString("abc124");
var numberString3 = new NumberString("abc124");
numberString1.CompareTo(numberString2).Should().BeNegative();
numberString2.CompareTo(numberString1).Should().BePositive();
numberString2.CompareTo(numberString3).Should().Be(0);
}
[Fact]
public void Equals_Operators()
{
var numberString1 = new NumberString("abc123");
var numberString2 = new NumberString("abc124");
var numberString3 = new NumberString("abc124");
(numberString1 == numberString2).Should().BeFalse();
(numberString2 == numberString3).Should().BeTrue();
(numberString1 != numberString3).Should().BeTrue();
(numberString2 != numberString3).Should().BeFalse();
}
[Fact]
public void Equals_Simple()
{
var numberString1 = new NumberString("abc123");
var numberString2 = new NumberString("abc123");
numberString1.Equals(new object()).Should().BeFalse();
numberString1.Equals(null).Should().BeFalse();
numberString1!.Equals(numberString2).Should().BeTrue();
}
[Fact]
public void GetEnumerator()
{
var numberString = new NumberString("abc123");
IEnumerator<int> enumerator = numberString.GetEnumerator();
enumerator.Should().BeOfType<DigitEnumerator>();
enumerator.Dispose();
}
[Fact]
public void GetEnumerator_Redirect()
{
var numberString = new NumberString("abc123");
IEnumerator enumerator = numberString.GetEnumerator();
enumerator.Should().BeOfType<DigitEnumerator>();
((IDisposable) enumerator).Dispose();
}
[Fact]
public void HashCode()
{
var numberString = new NumberString("abc123");
numberString.GetHashCode().Should().Be(numberString.NumericValue);
}
[Fact]
public void Indexer()
{
var numberString = new NumberString("5abc1de7fg34");
numberString[0].Should().Be(5);
numberString[2].Should().Be(7);
numberString[4].Should().Be(4);
numberString[-1].Should().Be(-1, "invalid index");
numberString[5].Should().Be(-1, "invalid index (too high)");
}
}