|
|
|
@ -14,7 +14,7 @@ using Xunit; |
|
|
|
|
|
|
|
namespace Avalonia.Base.UnitTests.Rendering.SceneGraph |
|
|
|
{ |
|
|
|
public class DrawOperationTests |
|
|
|
public class DrawOperationTests : ScopedTestBase |
|
|
|
{ |
|
|
|
|
|
|
|
class TestContext |
|
|
|
@ -22,11 +22,9 @@ namespace Avalonia.Base.UnitTests.Rendering.SceneGraph |
|
|
|
private readonly Compositor _compositor; |
|
|
|
public RenderDataDrawingContext Context { get; } |
|
|
|
|
|
|
|
public TestContext() |
|
|
|
public TestContext(CompositorTestServices services) |
|
|
|
{ |
|
|
|
_compositor = new Compositor(new RenderLoop( |
|
|
|
new CompositorTestServices.ManualRenderTimer()), null, false, |
|
|
|
new NullCompositorScheduler(), true); |
|
|
|
_compositor = services.Compositor; |
|
|
|
Context = new RenderDataDrawingContext(_compositor); |
|
|
|
} |
|
|
|
|
|
|
|
@ -46,10 +44,17 @@ namespace Avalonia.Base.UnitTests.Rendering.SceneGraph |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private CompositorTestServices _services = new(); |
|
|
|
public override void Dispose() |
|
|
|
{ |
|
|
|
_services.Dispose(); |
|
|
|
base.Dispose(); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Empty_Bounds_Remain_Empty() |
|
|
|
{ |
|
|
|
var ctx = new TestContext(); |
|
|
|
var ctx = new TestContext(_services); |
|
|
|
ctx.Context.DrawRectangle(Brushes.Black, null, default); |
|
|
|
|
|
|
|
Assert.Null(ctx.GetBounds()); |
|
|
|
@ -72,7 +77,7 @@ namespace Avalonia.Base.UnitTests.Rendering.SceneGraph |
|
|
|
double expectedWidth, |
|
|
|
double expectedHeight) |
|
|
|
{ |
|
|
|
var ctx = new TestContext(); |
|
|
|
var ctx = new TestContext(_services); |
|
|
|
using (ctx.Context.PushTransform(Matrix.CreateScale(scaleX, scaleY))) |
|
|
|
ctx.Context.DrawRectangle(null, new ImmutablePen(Brushes.Black, penThickness), new Rect(x, y, width, height)); |
|
|
|
|
|
|
|
@ -84,7 +89,7 @@ namespace Avalonia.Base.UnitTests.Rendering.SceneGraph |
|
|
|
{ |
|
|
|
var bitmap = RefCountable.Create(Mock.Of<IBitmapImpl>()); |
|
|
|
|
|
|
|
var ctx = new TestContext(); |
|
|
|
var ctx = new TestContext(_services); |
|
|
|
ctx.Context.DrawBitmap(bitmap, 1, new Rect(1, 1, 1, 1), new Rect(1, 1, 1, 1)); |
|
|
|
var renderData = ctx.Context.GetRenderResults()!; |
|
|
|
Assert.Equal(2, bitmap.RefCount); |
|
|
|
@ -112,7 +117,7 @@ namespace Avalonia.Base.UnitTests.Rendering.SceneGraph |
|
|
|
[Fact] |
|
|
|
public void HitTest_On_Geometry_Node_With_Zero_Transform_Does_Not_Throw() |
|
|
|
{ |
|
|
|
var ctx = new TestContext(); |
|
|
|
var ctx = new TestContext(_services); |
|
|
|
using (ctx.Context.PushTransform(new Matrix())) |
|
|
|
ctx.Context.DrawGeometry(Brushes.Black, null, Mock.Of<IGeometryImpl>()); |
|
|
|
Assert.False(ctx.Context.GetRenderResults()!.HitTest(default)); |
|
|
|
@ -121,7 +126,7 @@ namespace Avalonia.Base.UnitTests.Rendering.SceneGraph |
|
|
|
[Fact] |
|
|
|
public void HitTest_RectangleNode_With_Transform_Hits() |
|
|
|
{ |
|
|
|
var ctx = new TestContext(); |
|
|
|
var ctx = new TestContext(_services); |
|
|
|
using (ctx.Context.PushTransform(Matrix.CreateTranslation(20, 20))) |
|
|
|
ctx.Context.DrawRectangle(Brushes.Black, null, new RoundedRect(new Rect(0, 0, 10, 10))); |
|
|
|
|
|
|
|
|