Browse Source

Scoping

pull/11556/head
Nikita Tsukanov 3 years ago
parent
commit
ba07b5461b
  1. 25
      tests/Avalonia.Base.UnitTests/Rendering/SceneGraph/DrawOperationTests.cs
  2. 1
      tests/Avalonia.UnitTests/CompositorTestServices.cs
  3. 2
      tests/Avalonia.UnitTests/ScopedTestBase.cs

25
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<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)));

1
tests/Avalonia.UnitTests/CompositorTestServices.cs

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

Loading…
Cancel
Save