Browse Source

More tests for #4822.

Tested WPF's `Path` to confirm expected results: https://github.com/wieslawsoltes/WpfUnitTests
pull/4858/head
Steven Kirk 6 years ago
parent
commit
93f215d8ea
  1. 108
      tests/Avalonia.Controls.UnitTests/Shapes/PathTests.cs

108
tests/Avalonia.Controls.UnitTests/Shapes/PathTests.cs

@ -1,5 +1,4 @@
using System.Runtime.InteropServices;
using Avalonia.Controls.Shapes;
using Avalonia.Controls.Shapes;
using Avalonia.Media;
using Avalonia.UnitTests;
using Xunit;
@ -36,6 +35,111 @@ namespace Avalonia.Controls.UnitTests.Shapes
root.Child = null;
}
[Theory]
[InlineData(Stretch.None, 100, 200)]
[InlineData(Stretch.Fill, 500, 500)]
[InlineData(Stretch.Uniform, 250, 500)]
[InlineData(Stretch.UniformToFill, 500, 500)]
public void Calculates_Correct_DesiredSize_For_Finite_Bounds(Stretch stretch, double expectedWidth, double expectedHeight)
{
using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
var target = new Path()
{
Data = new RectangleGeometry { Rect = new Rect(0, 0, 100, 200) },
Stretch = stretch,
};
target.Measure(new Size(500, 500));
Assert.Equal(new Size(expectedWidth, expectedHeight), target.DesiredSize);
}
[Theory]
[InlineData(Stretch.None)]
[InlineData(Stretch.Fill)]
[InlineData(Stretch.Uniform)]
[InlineData(Stretch.UniformToFill)]
public void Calculates_Correct_DesiredSize_For_Infinite_Bounds(Stretch stretch)
{
using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
var target = new Path()
{
Data = new RectangleGeometry { Rect = new Rect(0, 0, 100, 200) },
Stretch = stretch,
};
target.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
Assert.Equal(new Size(100, 200), target.DesiredSize);
}
[Fact]
public void Measure_Does_Not_Update_RenderedGeometry_Transform()
{
using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
var target = new Path
{
Data = new RectangleGeometry { Rect = new Rect(0, 0, 100, 200) },
Stretch = Stretch.Fill,
};
target.Measure(new Size(500, 500));
Assert.Null(target.RenderedGeometry.Transform);
}
[Theory]
[InlineData(Stretch.None, 1, 1)]
[InlineData(Stretch.Fill, 5, 2.5)]
[InlineData(Stretch.Uniform, 2.5, 2.5)]
[InlineData(Stretch.UniformToFill, 5, 5)]
public void Arrange_Updates_RenderedGeometry_Transform(Stretch stretch, double expectedScaleX, double expectedScaleY)
{
using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
var target = new Path
{
Data = new RectangleGeometry { Rect = new Rect(0, 0, 100, 200) },
Stretch = stretch,
};
target.Measure(new Size(500, 500));
target.Arrange(new Rect(0, 0, 500, 500));
if (expectedScaleX == 1 && expectedScaleY == 1)
{
Assert.Null(target.RenderedGeometry.Transform);
}
else
{
Assert.Equal(Matrix.CreateScale(expectedScaleX, expectedScaleY), target.RenderedGeometry.Transform.Value);
}
}
[Fact]
public void Measure_Without_Arrange_Does_Not_Clear_RenderedGeometry_Transform()
{
using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
var target = new Path
{
Data = new RectangleGeometry { Rect = new Rect(0, 0, 100, 100) },
Stretch = Stretch.Fill,
};
target.Measure(new Size(200, 200));
target.Arrange(new Rect(0, 0, 200, 200));
Assert.Equal(Matrix.CreateScale(2, 2), target.RenderedGeometry.Transform.Value);
target.Measure(new Size(300, 300));
Assert.Equal(Matrix.CreateScale(2, 2), target.RenderedGeometry.Transform.Value);
}
[Fact]
public void Arrange_Without_Measure_Updates_RenderedGeometry_Transform()
{

Loading…
Cancel
Save