committed by
GitHub
26 changed files with 622 additions and 309 deletions
@ -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); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,113 +0,0 @@ |
|||||
using System.Collections.Generic; |
|
||||
using Avalonia.Controls; |
|
||||
using Avalonia.Controls.Shapes; |
|
||||
using Avalonia.Media; |
|
||||
using Avalonia.Platform; |
|
||||
using Avalonia.UnitTests; |
|
||||
using Xunit; |
|
||||
|
|
||||
namespace Avalonia.Layout.UnitTests |
|
||||
|
|
||||
{ |
|
||||
public class ShapeLayoutTests : TestWithServicesBase |
|
||||
{ |
|
||||
|
|
||||
public ShapeLayoutTests() |
|
||||
{ |
|
||||
AvaloniaLocator.CurrentMutable |
|
||||
.Bind<IPlatformRenderInterface>().ToSingleton<MockPlatformRenderInterface>(); |
|
||||
} |
|
||||
|
|
||||
[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<Point> |
|
||||
{ |
|
||||
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<Point> |
|
||||
{ |
|
||||
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<Point> |
|
||||
{ |
|
||||
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); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue