diff --git a/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems b/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems
index 79ceddf3bb..a4a7bffab6 100644
--- a/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems
+++ b/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems
@@ -9,6 +9,7 @@
Avalonia.RenderTests
+
diff --git a/tests/Avalonia.RenderTests/Media/FormattedTextImplTests.cs b/tests/Avalonia.RenderTests/Media/FormattedTextImplTests.cs
index 81e0207548..66b9d51b92 100644
--- a/tests/Avalonia.RenderTests/Media/FormattedTextImplTests.cs
+++ b/tests/Avalonia.RenderTests/Media/FormattedTextImplTests.cs
@@ -8,6 +8,7 @@ using System.Linq;
using Avalonia.Media;
using Xunit;
using Avalonia.Platform;
+using System.Globalization;
#if AVALONIA_CAIRO
namespace Avalonia.Cairo.RenderTests.Media
@@ -113,7 +114,7 @@ namespace Avalonia.Direct2D1.RenderTests.Media
fmt.Constraint = new Size(widthConstraint, 10000);
}
- var lines = fmt.GetLines();
+ var lines = fmt.GetLines().ToArray();
Assert.Equal(linesCount, lines.Count());
}
}
@@ -139,5 +140,44 @@ namespace Avalonia.Direct2D1.RenderTests.Media
}
}
+
+ [Theory]
+ [InlineData("x", 0, 1, "0,0,7.20,13.59")]
+ [InlineData(stringword, 0, 4, "0,0,28.80,13.59")]
+ [InlineData(stringmiddlenewlines, 10, 10, "0,13.59,57.61,13.59")]
+ [InlineData(stringmiddlenewlines, 10, 20, "0,13.59,57.61,13.59;0,27.19,64.81,13.59")]
+ [InlineData(stringmiddlenewlines, 10, 15, "0,13.59,57.61,13.59;0,27.19,36.01,13.59")]
+ [InlineData(stringmiddlenewlines, 15, 15, "36.01,13.59,21.60,13.59;0,27.19,64.81,13.59")]
+ public void Should_HitTestRange_Correctly(string input,
+ int index, int length,
+ string expectedRects)
+ {
+ //parse expected result
+ var rects = expectedRects.Split(';').Select(s =>
+ {
+ double[] v = s.Split(',')
+ .Select(sd => double.Parse(sd, CultureInfo.InvariantCulture)).ToArray();
+ return new Rect(v[0], v[1], v[2], v[3]);
+ }).ToArray();
+
+ using (var fmt = Create(input, FontSize))
+ {
+ var htRes = fmt.HitTestTextRange(index, length).ToArray();
+
+ Assert.Equal(rects.Length, htRes.Length);
+
+ for (int i = 0; i < rects.Length; i++)
+ {
+ var exr = rects[i];
+ var r = htRes[i];
+
+ Assert.Equal(exr.X, r.X, 2);
+ Assert.Equal(exr.Y, r.Y, 2);
+ Assert.Equal(exr.Width, r.Width, 2);
+ Assert.Equal(exr.Height, r.Height, 2);
+ }
+ }
+ }
+
}
}
\ No newline at end of file