|
|
|
@ -1,8 +1,11 @@ |
|
|
|
using System.Collections.Generic; |
|
|
|
using Avalonia.Collections; |
|
|
|
using Avalonia.Controls; |
|
|
|
using Avalonia.Layout; |
|
|
|
using Avalonia.Media; |
|
|
|
using Avalonia.Platform; |
|
|
|
using Avalonia.Rendering; |
|
|
|
using Avalonia.UnitTests; |
|
|
|
using Avalonia.VisualTree; |
|
|
|
using Moq; |
|
|
|
using Xunit; |
|
|
|
@ -94,5 +97,86 @@ namespace Avalonia.Visuals.UnitTests.Rendering |
|
|
|
//then new position
|
|
|
|
Assert.Equal(new Rect(100, 100, 100, 100), invalidationCalls[2]); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Render_Child_In_Parent_With_RenderTransform() |
|
|
|
{ |
|
|
|
var targetMock = new Mock<Control>() { CallBase = true }; |
|
|
|
var target = targetMock.Object; |
|
|
|
target.Width = 100; |
|
|
|
target.Height = 50; |
|
|
|
var child = new Panel() |
|
|
|
{ |
|
|
|
RenderTransform = new RotateTransform() { Angle = 90 }, |
|
|
|
Children = |
|
|
|
{ |
|
|
|
new Panel() |
|
|
|
{ |
|
|
|
Children = |
|
|
|
{ |
|
|
|
target |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var visualTarget = targetMock.As<IVisual>(); |
|
|
|
int rendered = 0; |
|
|
|
visualTarget.Setup(v => v.Render(It.IsAny<DrawingContext>())).Callback(() => rendered++); |
|
|
|
|
|
|
|
var root = new TestRoot(child); |
|
|
|
root.Renderer = new ImmediateRenderer(root); |
|
|
|
|
|
|
|
root.LayoutManager.ExecuteInitialLayoutPass(root); |
|
|
|
|
|
|
|
root.Measure(new Size(50, 100)); |
|
|
|
root.Arrange(new Rect(new Size(50, 100))); |
|
|
|
|
|
|
|
root.Renderer.Paint(root.Bounds); |
|
|
|
|
|
|
|
Assert.Equal(1, rendered); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Render_Child_In_Parent_With_RenderTransform2() |
|
|
|
{ |
|
|
|
var targetMock = new Mock<Control>() { CallBase = true }; |
|
|
|
var target = targetMock.Object; |
|
|
|
|
|
|
|
target.Width = 100; |
|
|
|
target.Height = 50; |
|
|
|
target.HorizontalAlignment = HorizontalAlignment.Center; |
|
|
|
target.VerticalAlignment = VerticalAlignment.Center; |
|
|
|
|
|
|
|
var child = new Panel() |
|
|
|
{ |
|
|
|
RenderTransform = new RotateTransform() { Angle = 90 }, |
|
|
|
Children = |
|
|
|
{ |
|
|
|
new Panel() |
|
|
|
{ |
|
|
|
Children = |
|
|
|
{ |
|
|
|
target |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var visualTarget = targetMock.As<IVisual>(); |
|
|
|
int rendered = 0; |
|
|
|
visualTarget.Setup(v => v.Render(It.IsAny<DrawingContext>())).Callback(() => rendered++); |
|
|
|
|
|
|
|
var root = new TestRoot(child); |
|
|
|
root.Renderer = new ImmediateRenderer(root); |
|
|
|
|
|
|
|
root.LayoutManager.ExecuteInitialLayoutPass(root); |
|
|
|
|
|
|
|
root.Measure(new Size(300, 100)); |
|
|
|
root.Arrange(new Rect(new Size(300, 100))); |
|
|
|
root.Renderer.Paint(root.Bounds); |
|
|
|
|
|
|
|
Assert.Equal(1, rendered); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|