Scoping
This commit is contained in:
@@ -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)));
|
||||
|
||||
|
||||
@@ -125,7 +125,6 @@ public class CompositorTestServices : IDisposable
|
||||
public event Action<TimeSpan> Tick;
|
||||
public bool RunsInBackground => false;
|
||||
public void TriggerTick() => Tick?.Invoke(TimeSpan.Zero);
|
||||
public Task TriggerBackgroundTick() => Task.Run(TriggerTick);
|
||||
}
|
||||
|
||||
class TopLevelImpl : ITopLevelImpl
|
||||
|
||||
@@ -2,9 +2,11 @@ using System;
|
||||
using System.Threading;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Threading;
|
||||
using Xunit;
|
||||
|
||||
namespace Avalonia.UnitTests;
|
||||
|
||||
[Collection("Scoped Not Parallel")]
|
||||
public class ScopedTestBase : IDisposable
|
||||
{
|
||||
private readonly IDisposable _scope;
|
||||
|
||||
Reference in New Issue
Block a user