From d1e322c94ba36b016e32f1f3dbc8085ed6d32921 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Wed, 8 Feb 2017 18:07:47 +0100 Subject: [PATCH] Added failing test. RenderTransforms aren't being applied correctly after initial scene build. --- .../Rendering/SceneGraph/SceneBuilderTests.cs | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests.cs b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests.cs index 2f0a636db5..8c71cf4d00 100644 --- a/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests.cs @@ -220,6 +220,49 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph } } + [Fact] + public void Transform_For_Control_With_RenderTransform_Should_Be_Correct_After_Update() + { + using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface)) + { + Border border; + var tree = new TestRoot + { + Width = 400, + Height = 200, + Child = new Decorator + { + Width = 200, + Height = 100, + Child = border = new Border + { + Background = Brushes.Red, + HorizontalAlignment = HorizontalAlignment.Right, + Width = 100, + RenderTransform = new ScaleTransform(0.5, 1), + } + } + }; + + tree.Measure(Size.Infinity); + tree.Arrange(new Rect(tree.DesiredSize)); + + var scene = new Scene(tree); + var sceneBuilder = new SceneBuilder(); + sceneBuilder.UpdateAll(scene); + + var expectedTransform = Matrix.CreateScale(0.5, 1) * Matrix.CreateTranslation(225, 50); + var borderNode = scene.FindNode(border); + Assert.Equal(expectedTransform, borderNode.Transform); + + scene = scene.Clone(); + Assert.True(sceneBuilder.Update(scene, border)); + + borderNode = scene.FindNode(border); + Assert.Equal(expectedTransform, borderNode.Transform); + } + } + [Fact] public void Should_Update_Border_Background_Node() {