diff --git a/src/Avalonia.Base/Media/UnicodeRange.cs b/src/Avalonia.Base/Media/UnicodeRange.cs index 59325afef7..0018f4d6b1 100644 --- a/src/Avalonia.Base/Media/UnicodeRange.cs +++ b/src/Avalonia.Base/Media/UnicodeRange.cs @@ -131,7 +131,7 @@ namespace Avalonia.Media /// public bool IsInRange(int value) { - return value - Start <= End - Start; + return Start <= value && value <= End; } /// diff --git a/tests/Avalonia.Base.UnitTests/Media/UnicodeRangeSegmentTests.cs b/tests/Avalonia.Base.UnitTests/Media/UnicodeRangeSegmentTests.cs index 200358d4b9..cc061fb006 100644 --- a/tests/Avalonia.Base.UnitTests/Media/UnicodeRangeSegmentTests.cs +++ b/tests/Avalonia.Base.UnitTests/Media/UnicodeRangeSegmentTests.cs @@ -18,5 +18,28 @@ namespace Avalonia.Visuals.UnitTests.Media Assert.Equal(expectedEnd, segment.End); } + + [InlineData(0)] + [InlineData(19)] + [InlineData(26)] + [InlineData(100)] + [Theory] + public void InRange_Should_Return_False_For_Values_Outside_Range(int value) + { + var segment = new UnicodeRangeSegment(20, 25); + + Assert.Equal(false, segment.IsInRange(value)); + } + + [InlineData(20)] + [InlineData(21)] + [InlineData(22)] + [Theory] + public void InRange_Should_Return_True_For_Values_Within_Range(int value) + { + var segment = new UnicodeRangeSegment(20, 22); + + Assert.Equal(true, segment.IsInRange(value)); + } } }