From 7db5ae8db97f4fdd8ace8a62bdc3f14e7f8035af Mon Sep 17 00:00:00 2001 From: sdoroff Date: Mon, 23 Oct 2017 22:58:27 +0300 Subject: [PATCH] Added unit tests --- .../Avalonia.RenderTests.projitems | 1 + .../Avalonia.RenderTests/Shapes/ShapeTests.cs | 112 ++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 tests/Avalonia.RenderTests/Shapes/ShapeTests.cs diff --git a/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems b/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems index ff729a6b48..4263d7b206 100644 --- a/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems +++ b/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems @@ -14,6 +14,7 @@ + diff --git a/tests/Avalonia.RenderTests/Shapes/ShapeTests.cs b/tests/Avalonia.RenderTests/Shapes/ShapeTests.cs new file mode 100644 index 0000000000..20d3af375c --- /dev/null +++ b/tests/Avalonia.RenderTests/Shapes/ShapeTests.cs @@ -0,0 +1,112 @@ +using System.Collections.Generic; +using Avalonia.Controls; +using Avalonia.Controls.Shapes; +using Avalonia.Media; +using Xunit; + + +#if AVALONIA_SKIA +namespace Avalonia.Skia.RenderTests +#else +namespace Avalonia.Direct2D1.RenderTests.Shapes +#endif +{ + public class ShapeTests : TestBase + { + public ShapeTests() + : base(@"Shapes\Shape") + { } + + [Fact] + public void Shape_Transformation_Calculation_Should_Be_Deferred_To_Arrange_When_Strech_Is_Fill_And_Aviable_Size_Is_Infinite() + { + var shape = new Polygon() + { + Points = new List + { + new Point(0, 0), + new Point(10, 5), + new Point(0, 10) + }, + Stretch = Stretch.Fill + }; + + var availableSize = new Size(double.PositiveInfinity, double.PositiveInfinity); + shape.Measure(availableSize); + Geometry postMeasureGeometry = shape.RenderedGeometry; + Transform postMeasureTransform = postMeasureGeometry.Transform; + + var finalSize = new Size(100, 50); + var finalRect = new Rect(finalSize); + shape.Arrange(finalRect); + + Geometry postArrangeGeometry = shape.RenderedGeometry; + Transform postArrangeTransform = postArrangeGeometry.Transform; + + Assert.NotEqual(postMeasureGeometry, postArrangeGeometry); + Assert.NotEqual(postMeasureTransform, postArrangeTransform); + Assert.Equal(finalSize, shape.Bounds.Size); + } + + [Fact] + public void Shape_Transformation_Calculation_Should_Not_Be_Deferred_To_Arrange_When_Strech_Is_Fill_And_Aviable_Size_Is_Finite() + { + var shape = new Polygon() + { + Points = new List + { + new Point(0, 0), + new Point(10, 5), + new Point(0, 10) + }, + Stretch = Stretch.Fill + }; + + var availableSize = new Size(100, 50); + shape.Measure(availableSize); + Geometry postMeasureGeometry = shape.RenderedGeometry; + Transform postMeasureTransform = postMeasureGeometry.Transform; + + var finalRect = new Rect(availableSize); + shape.Arrange(finalRect); + + Geometry postArrangeGeometry = shape.RenderedGeometry; + Transform postArrangeTransform = postArrangeGeometry.Transform; + + Assert.Equal(postMeasureGeometry, postArrangeGeometry); + Assert.Equal(postMeasureTransform, postArrangeTransform); + Assert.Equal(availableSize, shape.Bounds.Size); + } + + [Fact] + public void Shape_Transformation_Calculation_Should_Not_Be_Deferred_To_Arrange_When_Strech_Is_None() + { + var shape = new Polygon() + { + Points = new List + { + new Point(0, 0), + new Point(10, 5), + new Point(0, 10) + }, + Stretch = Stretch.None + }; + + var availableSize = new Size(double.PositiveInfinity, double.PositiveInfinity); + shape.Measure(availableSize); + Geometry postMeasureGeometry = shape.RenderedGeometry; + Transform postMeasureTransform = postMeasureGeometry.Transform; + + var finalSize = new Size(100, 50); + var finalRect = new Rect(finalSize); + shape.Arrange(finalRect); + + Geometry postArrangeGeometry = shape.RenderedGeometry; + Transform postArrangeTransform = postArrangeGeometry.Transform; + + Assert.Equal(postMeasureGeometry, postArrangeGeometry); + Assert.Equal(postMeasureTransform, postArrangeTransform); + Assert.Equal(finalSize, shape.Bounds.Size); + } + } +}