From ba07b5461b4765eba5c6b92f66aadccf97f14a7c Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Mon, 29 May 2023 16:24:33 +0600 Subject: [PATCH] Scoping --- .../SceneGraph/DrawOperationTests.cs | 25 +++++++++++-------- .../CompositorTestServices.cs | 1 - tests/Avalonia.UnitTests/ScopedTestBase.cs | 2 ++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/tests/Avalonia.Base.UnitTests/Rendering/SceneGraph/DrawOperationTests.cs b/tests/Avalonia.Base.UnitTests/Rendering/SceneGraph/DrawOperationTests.cs index 90685101b1..5c6115f8c8 100644 --- a/tests/Avalonia.Base.UnitTests/Rendering/SceneGraph/DrawOperationTests.cs +++ b/tests/Avalonia.Base.UnitTests/Rendering/SceneGraph/DrawOperationTests.cs @@ -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()); - 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()); 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))); diff --git a/tests/Avalonia.UnitTests/CompositorTestServices.cs b/tests/Avalonia.UnitTests/CompositorTestServices.cs index 7850735178..f1d41364e9 100644 --- a/tests/Avalonia.UnitTests/CompositorTestServices.cs +++ b/tests/Avalonia.UnitTests/CompositorTestServices.cs @@ -125,7 +125,6 @@ public class CompositorTestServices : IDisposable public event Action Tick; public bool RunsInBackground => false; public void TriggerTick() => Tick?.Invoke(TimeSpan.Zero); - public Task TriggerBackgroundTick() => Task.Run(TriggerTick); } class TopLevelImpl : ITopLevelImpl diff --git a/tests/Avalonia.UnitTests/ScopedTestBase.cs b/tests/Avalonia.UnitTests/ScopedTestBase.cs index 81f4e87032..5104823c7b 100644 --- a/tests/Avalonia.UnitTests/ScopedTestBase.cs +++ b/tests/Avalonia.UnitTests/ScopedTestBase.cs @@ -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;