|
|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |