Browse Source

Added failing test.

RenderTransforms aren't being applied correctly after initial scene
build.
Steven Kirk 8 years ago
parent
commit
d1e322c94b

+ 43 - 0
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()
         {