Browse Source

Added some tests for Rectangle and Ellipse.

Because these classes override the base `Shape` layout.
Steven Kirk 5 years ago
parent
commit
41050b6742

+ 57 - 0
tests/Avalonia.Controls.UnitTests/Shapes/EllipseTests.cs

@@ -0,0 +1,57 @@
+using Avalonia.Controls.Shapes;
+using Avalonia.Media;
+using Avalonia.UnitTests;
+using Xunit;
+
+namespace Avalonia.Controls.UnitTests.Shapes
+{
+    public class EllipseTests
+    {
+        [Fact]
+        public void Measure_Does_Not_Set_RenderedGeometry_Rect()
+        {
+            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
+            
+            var target = new Ellipse();
+
+            target.Measure(new Size(100, 100));
+
+            var geometry = Assert.IsType<EllipseGeometry>(target.RenderedGeometry);
+            Assert.Equal(default, geometry.Rect);
+        }
+
+        [Fact]
+        public void Arrange_Sets_RenderedGeometry_Properties()
+        {
+            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
+
+            var target = new Ellipse();
+
+            target.Measure(new Size(100, 100));
+            target.Arrange(new Rect(0, 0, 100, 100));
+
+            var geometry = Assert.IsType<EllipseGeometry>(target.RenderedGeometry);
+            Assert.Equal(new Rect(0, 0, 100, 100), geometry.Rect);            
+        }
+
+        [Fact]
+        public void Rearranging_Updates_RenderedGeometry_Rect()
+        {
+            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
+
+            var target = new Ellipse();
+
+            target.Measure(new Size(100, 100));
+            target.Arrange(new Rect(0, 0, 100, 100));
+
+            var geometry = Assert.IsType<EllipseGeometry>(target.RenderedGeometry);
+            Assert.Equal(new Rect(0, 0, 100, 100), geometry.Rect);
+
+            target.Measure(new Size(200, 200));
+            target.Arrange(new Rect(0, 0, 200, 200));
+
+            geometry = Assert.IsType<EllipseGeometry>(target.RenderedGeometry);
+            Assert.Equal(new Rect(0, 0, 200, 200), geometry.Rect);
+        }
+    }
+}

+ 50 - 6
tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs

@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Avalonia.Controls.Shapes;
+using Avalonia.Controls.Shapes;
 using Avalonia.Media;
 using Avalonia.UnitTests;
 using Moq;
@@ -11,6 +8,53 @@ namespace Avalonia.Controls.UnitTests.Shapes
 {
     public class RectangleTests
     {
+        [Fact]
+        public void Measure_Does_Not_Set_RenderedGeometry_Rect()
+        {
+            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
+
+            var target = new Rectangle();
+
+            target.Measure(new Size(100, 100));
+
+            var geometry = Assert.IsType<RectangleGeometry>(target.RenderedGeometry);
+            Assert.Equal(Rect.Empty, geometry.Rect);
+        }
+
+        [Fact]
+        public void Arrange_Sets_RenderedGeometry_Rect()
+        {
+            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
+
+            var target = new Rectangle();
+
+            target.Measure(new Size(100, 100));
+            target.Arrange(new Rect(0, 0, 100, 100));
+
+            var geometry = Assert.IsType<RectangleGeometry>(target.RenderedGeometry);
+            Assert.Equal(new Rect(0, 0, 100, 100), geometry.Rect);
+        }
+
+        [Fact]
+        public void Rearranging_Updates_RenderedGeometry_Rect()
+        {
+            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
+
+            var target = new Rectangle();
+
+            target.Measure(new Size(100, 100));
+            target.Arrange(new Rect(0, 0, 100, 100));
+
+            var geometry = Assert.IsType<RectangleGeometry>(target.RenderedGeometry);
+            Assert.Equal(new Rect(0, 0, 100, 100), geometry.Rect);
+
+            target.Measure(new Size(200, 200));
+            target.Arrange(new Rect(0, 0, 200, 200));
+
+            geometry = Assert.IsType<RectangleGeometry>(target.RenderedGeometry);
+            Assert.Equal(new Rect(0, 0, 200, 200), geometry.Rect);
+        }
+
         [Fact]
         public void Changing_Fill_Brush_Color_Should_Invalidate_Visual()
         {
@@ -21,7 +65,7 @@ namespace Avalonia.Controls.UnitTests.Shapes
 
             var root = new TestRoot(target);
             var renderer = Mock.Get(root.Renderer);
-            renderer.ResetCalls();
+            renderer.Invocations.Clear();
 
             ((SolidColorBrush)target.Fill).Color = Colors.Green;
 
@@ -38,7 +82,7 @@ namespace Avalonia.Controls.UnitTests.Shapes
 
             var root = new TestRoot(target);
             var renderer = Mock.Get(root.Renderer);
-            renderer.ResetCalls();
+            renderer.Invocations.Clear();
 
             ((SolidColorBrush)target.Stroke).Color = Colors.Green;