ShapeLayoutTests.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using System.Collections.Generic;
  2. using Avalonia.Controls;
  3. using Avalonia.Controls.Shapes;
  4. using Avalonia.Media;
  5. using Avalonia.Platform;
  6. using Avalonia.UnitTests;
  7. using Xunit;
  8. namespace Avalonia.Layout.UnitTests
  9. {
  10. public class ShapeLayoutTests : TestWithServicesBase
  11. {
  12. public ShapeLayoutTests()
  13. {
  14. AvaloniaLocator.CurrentMutable
  15. .Bind<IPlatformRenderInterface>().ToSingleton<MockPlatformRenderInterface>();
  16. }
  17. [Fact]
  18. public void Shape_Transformation_Calculation_Should_Be_Deferred_To_Arrange_When_Strech_Is_Fill_And_Aviable_Size_Is_Infinite()
  19. {
  20. var shape = new Polygon()
  21. {
  22. Points = new List<Point>
  23. {
  24. new Point(0, 0),
  25. new Point(10, 5),
  26. new Point(0, 10)
  27. },
  28. Stretch = Stretch.Fill
  29. };
  30. var availableSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
  31. shape.Measure(availableSize);
  32. Geometry postMeasureGeometry = shape.RenderedGeometry;
  33. Transform postMeasureTransform = postMeasureGeometry.Transform;
  34. var finalSize = new Size(100, 50);
  35. var finalRect = new Rect(finalSize);
  36. shape.Arrange(finalRect);
  37. Geometry postArrangeGeometry = shape.RenderedGeometry;
  38. Transform postArrangeTransform = postArrangeGeometry.Transform;
  39. Assert.NotEqual(postMeasureGeometry, postArrangeGeometry);
  40. Assert.NotEqual(postMeasureTransform, postArrangeTransform);
  41. Assert.Equal(finalSize, shape.Bounds.Size);
  42. }
  43. [Fact]
  44. public void Shape_Transformation_Calculation_Should_Not_Be_Deferred_To_Arrange_When_Strech_Is_Fill_And_Aviable_Size_Is_Finite()
  45. {
  46. var shape = new Polygon()
  47. {
  48. Points = new List<Point>
  49. {
  50. new Point(0, 0),
  51. new Point(10, 5),
  52. new Point(0, 10)
  53. },
  54. Stretch = Stretch.Fill
  55. };
  56. var availableSize = new Size(100, 50);
  57. shape.Measure(availableSize);
  58. Geometry postMeasureGeometry = shape.RenderedGeometry;
  59. Transform postMeasureTransform = postMeasureGeometry.Transform;
  60. var finalRect = new Rect(availableSize);
  61. shape.Arrange(finalRect);
  62. Geometry postArrangeGeometry = shape.RenderedGeometry;
  63. Transform postArrangeTransform = postArrangeGeometry.Transform;
  64. Assert.Equal(postMeasureGeometry, postArrangeGeometry);
  65. Assert.Equal(postMeasureTransform, postArrangeTransform);
  66. Assert.Equal(availableSize, shape.Bounds.Size);
  67. }
  68. [Fact]
  69. public void Shape_Transformation_Calculation_Should_Not_Be_Deferred_To_Arrange_When_Strech_Is_None()
  70. {
  71. var shape = new Polygon()
  72. {
  73. Points = new List<Point>
  74. {
  75. new Point(0, 0),
  76. new Point(10, 5),
  77. new Point(0, 10)
  78. },
  79. Stretch = Stretch.None
  80. };
  81. var availableSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
  82. shape.Measure(availableSize);
  83. Geometry postMeasureGeometry = shape.RenderedGeometry;
  84. Transform postMeasureTransform = postMeasureGeometry.Transform;
  85. var finalSize = new Size(100, 50);
  86. var finalRect = new Rect(finalSize);
  87. shape.Arrange(finalRect);
  88. Geometry postArrangeGeometry = shape.RenderedGeometry;
  89. Transform postArrangeTransform = postArrangeGeometry.Transform;
  90. Assert.Equal(postMeasureGeometry, postArrangeGeometry);
  91. Assert.Equal(postMeasureTransform, postArrangeTransform);
  92. Assert.Equal(finalSize, shape.Bounds.Size);
  93. }
  94. }
  95. }