ViewboxTests.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using Avalonia.Controls.Shapes;
  2. using Avalonia.Media;
  3. using Xunit;
  4. namespace Avalonia.Controls.UnitTests
  5. {
  6. public class ViewboxTests
  7. {
  8. [Fact]
  9. public void Viewbox_Stretch_Uniform_Child()
  10. {
  11. var target = new Viewbox() { Child = new Rectangle() { Width = 100, Height = 50 } };
  12. target.Measure(new Size(200, 200));
  13. target.Arrange(new Rect(new Point(0, 0), target.DesiredSize));
  14. Assert.Equal(new Size(200, 100), target.DesiredSize);
  15. var scaleTransform = target.Child.RenderTransform as ScaleTransform;
  16. Assert.NotNull(scaleTransform);
  17. Assert.Equal(2.0, scaleTransform.ScaleX);
  18. Assert.Equal(2.0, scaleTransform.ScaleY);
  19. }
  20. [Fact]
  21. public void Viewbox_Stretch_None_Child()
  22. {
  23. var target = new Viewbox() { Stretch = Stretch.None, Child = new Rectangle() { Width = 100, Height = 50 } };
  24. target.Measure(new Size(200, 200));
  25. target.Arrange(new Rect(new Point(0, 0), target.DesiredSize));
  26. Assert.Equal(new Size(100, 50), target.DesiredSize);
  27. var scaleTransform = target.Child.RenderTransform as ScaleTransform;
  28. Assert.NotNull(scaleTransform);
  29. Assert.Equal(1.0, scaleTransform.ScaleX);
  30. Assert.Equal(1.0, scaleTransform.ScaleY);
  31. }
  32. [Fact]
  33. public void Viewbox_Stretch_Fill_Child()
  34. {
  35. var target = new Viewbox() { Stretch = Stretch.Fill, Child = new Rectangle() { Width = 100, Height = 50 } };
  36. target.Measure(new Size(200, 200));
  37. target.Arrange(new Rect(new Point(0, 0), target.DesiredSize));
  38. Assert.Equal(new Size(200, 200), target.DesiredSize);
  39. var scaleTransform = target.Child.RenderTransform as ScaleTransform;
  40. Assert.NotNull(scaleTransform);
  41. Assert.Equal(2.0, scaleTransform.ScaleX);
  42. Assert.Equal(4.0, scaleTransform.ScaleY);
  43. }
  44. [Fact]
  45. public void Viewbox_Stretch_UniformToFill_Child()
  46. {
  47. var target = new Viewbox() { Stretch = Stretch.UniformToFill, Child = new Rectangle() { Width = 100, Height = 50 } };
  48. target.Measure(new Size(200, 200));
  49. target.Arrange(new Rect(new Point(0, 0), target.DesiredSize));
  50. Assert.Equal(new Size(200, 200), target.DesiredSize);
  51. var scaleTransform = target.Child.RenderTransform as ScaleTransform;
  52. Assert.NotNull(scaleTransform);
  53. Assert.Equal(4.0, scaleTransform.ScaleX);
  54. Assert.Equal(4.0, scaleTransform.ScaleY);
  55. }
  56. [Fact]
  57. public void Viewbox_Stretch_Uniform_Child_With_Unrestricted_Width()
  58. {
  59. var target = new Viewbox() { Child = new Rectangle() { Width = 100, Height = 50 } };
  60. target.Measure(new Size(double.PositiveInfinity, 200));
  61. target.Arrange(new Rect(new Point(0, 0), target.DesiredSize));
  62. Assert.Equal(new Size(400, 200), target.DesiredSize);
  63. var scaleTransform = target.Child.RenderTransform as ScaleTransform;
  64. Assert.NotNull(scaleTransform);
  65. Assert.Equal(4.0, scaleTransform.ScaleX);
  66. Assert.Equal(4.0, scaleTransform.ScaleY);
  67. }
  68. [Fact]
  69. public void Viewbox_Stretch_Uniform_Child_With_Unrestricted_Height()
  70. {
  71. var target = new Viewbox() { Child = new Rectangle() { Width = 100, Height = 50 } };
  72. target.Measure(new Size(200, double.PositiveInfinity));
  73. target.Arrange(new Rect(new Point(0, 0), target.DesiredSize));
  74. Assert.Equal(new Size(200, 100), target.DesiredSize);
  75. var scaleTransform = target.Child.RenderTransform as ScaleTransform;
  76. Assert.NotNull(scaleTransform);
  77. Assert.Equal(2.0, scaleTransform.ScaleX);
  78. Assert.Equal(2.0, scaleTransform.ScaleY);
  79. }
  80. }
  81. }