using FluentAssertions; using Marathon.Domain.ValueObjects; namespace Marathon.Domain.Tests.ValueObjects; public sealed class SportCodeTests { [Fact] public void Constructor_CreatesInstance_WhenValueIsPositive() { var code = new SportCode(6); code.Value.Should().Be(6); } [Theory] [InlineData(0)] [InlineData(-1)] [InlineData(int.MinValue)] public void Constructor_ThrowsArgumentOutOfRangeException_WhenValueIsZeroOrNegative(int value) { var act = () => new SportCode(value); act.Should().Throw() .WithParameterName("value"); } [Fact] public void ToString_ReturnsStringRepresentationOfValue() { var code = new SportCode(22723); code.ToString().Should().Be("22723"); } [Fact] public void Equality_IsValueBased() { var a = new SportCode(6); var b = new SportCode(6); a.Should().Be(b); a.Should().NotBeSameAs(b); } }