1 changed files with 69 additions and 0 deletions
@ -0,0 +1,69 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
using Avalonia.Media; |
||||
|
using Avalonia.Rendering; |
||||
|
using Avalonia.VisualTree; |
||||
|
using Moq; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Avalonia.Visuals.UnitTests.Rendering |
||||
|
{ |
||||
|
public class ImmediateRendererTests |
||||
|
{ |
||||
|
[Fact] |
||||
|
public void AddDirty_Call_RenderRoot_Invalidate() |
||||
|
{ |
||||
|
var visual = new Mock<Visual>(); |
||||
|
var child = new Mock<Visual>(); |
||||
|
var renderRoot = visual.As<IRenderRoot>(); |
||||
|
|
||||
|
visual.As<IVisual>().Setup(v => v.Bounds).Returns(new Rect(0, 0, 400, 400)); |
||||
|
|
||||
|
child.As<IVisual>().Setup(v => v.Bounds).Returns(new Rect(10, 10, 100, 100)); |
||||
|
child.As<IVisual>().Setup(v => v.VisualParent).Returns(visual.Object); |
||||
|
child.As<IVisual>().Setup(v => v.RenderTransform).Returns(default(Transform)); |
||||
|
child.As<IVisual>().Setup(v => v.RenderTransformOrigin).Returns(new RelativePoint(0.5, 0.5, RelativeUnit.Relative)); |
||||
|
child.As<IVisual>().Setup(v => v.TransformToVisual(It.IsAny<IVisual>())).CallBase(); |
||||
|
|
||||
|
var target = new ImmediateRenderer(visual.Object); |
||||
|
|
||||
|
target.AddDirty(child.Object); |
||||
|
|
||||
|
renderRoot.Verify(v => v.Invalidate(new Rect(10, 10, 100, 100))); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
[Fact] |
||||
|
public void AddDirty_With_RenderTransform_Call_RenderRoot_Invalidate() |
||||
|
{ |
||||
|
var visual = new Mock<Visual>(); |
||||
|
var child = new Mock<Visual>(); |
||||
|
var renderRoot = visual.As<IRenderRoot>(); |
||||
|
|
||||
|
visual.As<IVisual>().Setup(v => v.Bounds).Returns(new Rect(0, 0, 400, 400)); |
||||
|
|
||||
|
child.As<IVisual>().Setup(v => v.Bounds).Returns(new Rect(100, 100, 100, 100)); |
||||
|
child.As<IVisual>().Setup(v => v.VisualParent).Returns(visual.Object); |
||||
|
child.As<IVisual>().Setup(v => v.RenderTransform).Returns(new ScaleTransform() { ScaleX = 2, ScaleY = 2 }); |
||||
|
child.As<IVisual>().Setup(v => v.RenderTransformOrigin).Returns(new RelativePoint(0.5, 0.5, RelativeUnit.Relative)); |
||||
|
child.As<IVisual>().Setup(v => v.TransformToVisual(It.IsAny<IVisual>())).CallBase(); |
||||
|
|
||||
|
var target = new ImmediateRenderer(visual.Object); |
||||
|
|
||||
|
target.AddDirty(child.Object); |
||||
|
|
||||
|
renderRoot.Verify(v => v.Invalidate(new Rect(50, 50, 200, 200))); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public class TestVisual : Visual |
||||
|
{ |
||||
|
public new Rect Bounds |
||||
|
{ |
||||
|
get => base.Bounds; |
||||
|
set => base.Bounds = value; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue