From 41050b67422be08b8b15700f3e99fd5879acb58a Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 13 Oct 2020 18:26:34 +0200 Subject: [PATCH] Added some tests for Rectangle and Ellipse. Because these classes override the base `Shape` layout. --- .../Shapes/EllipseTests.cs | 57 +++++++++++++++++++ .../Shapes/RectangleTests.cs | 56 ++++++++++++++++-- 2 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 tests/Avalonia.Controls.UnitTests/Shapes/EllipseTests.cs diff --git a/tests/Avalonia.Controls.UnitTests/Shapes/EllipseTests.cs b/tests/Avalonia.Controls.UnitTests/Shapes/EllipseTests.cs new file mode 100644 index 0000000000..626945894f --- /dev/null +++ b/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(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(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(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(target.RenderedGeometry); + Assert.Equal(new Rect(0, 0, 200, 200), geometry.Rect); + } + } +} diff --git a/tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs b/tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs index 0ec73edec0..8d8ce10d4c 100644 --- a/tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs +++ b/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(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(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(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(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;