using FluentAssertions; using Marathon.Domain.ValueObjects; namespace Marathon.Domain.Tests.ValueObjects; public sealed class OddsRateTests { [Theory] [InlineData("1.01")] [InlineData("1.65")] [InlineData("10.5")] [InlineData("100.0")] public void Constructor_CreatesInstance_WhenValueIsGreaterThanOne(string rawValue) { var value = decimal.Parse(rawValue); var rate = new OddsRate(value); rate.Value.Should().Be(value); } [Theory] [InlineData("1.0")] [InlineData("0.99")] [InlineData("0.0")] [InlineData("-1.5")] public void Constructor_ThrowsArgumentOutOfRangeException_WhenValueIsOneOrLess(string rawValue) { var value = decimal.Parse(rawValue); var act = () => new OddsRate(value); act.Should().Throw() .WithParameterName("value"); } [Fact] public void Equality_IsValueBased() { var a = new OddsRate(1.65m); var b = new OddsRate(1.65m); a.Should().Be(b); } }