ImageTests.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using Moq;
  2. using Avalonia.Media;
  3. using Avalonia.Media.Imaging;
  4. using Avalonia.UnitTests;
  5. using Xunit;
  6. namespace Avalonia.Controls.UnitTests
  7. {
  8. public class ImageTests : ScopedTestBase
  9. {
  10. [Fact]
  11. public void Measure_Should_Return_Correct_Size_For_No_Stretch()
  12. {
  13. var bitmap = CreateBitmap(50, 100);
  14. var target = new Image();
  15. target.Stretch = Stretch.None;
  16. target.Source = bitmap;
  17. target.Measure(new Size(50, 50));
  18. Assert.Equal(new Size(50, 50), target.DesiredSize);
  19. }
  20. [Fact]
  21. public void Measure_Should_Return_Correct_Size_For_Fill_Stretch()
  22. {
  23. var bitmap = CreateBitmap(50, 100);
  24. var target = new Image();
  25. target.Stretch = Stretch.Fill;
  26. target.Source = bitmap;
  27. target.Measure(new Size(50, 50));
  28. Assert.Equal(new Size(50, 50), target.DesiredSize);
  29. }
  30. [Fact]
  31. public void Measure_Should_Return_Correct_Size_For_Uniform_Stretch()
  32. {
  33. var bitmap = CreateBitmap(50, 100);
  34. var target = new Image();
  35. target.Stretch = Stretch.Uniform;
  36. target.Source = bitmap;
  37. target.Measure(new Size(50, 50));
  38. Assert.Equal(new Size(25, 50), target.DesiredSize);
  39. }
  40. [Fact]
  41. public void Measure_Should_Return_Correct_Size_For_UniformToFill_Stretch()
  42. {
  43. var bitmap = CreateBitmap(50, 100);
  44. var target = new Image();
  45. target.Stretch = Stretch.UniformToFill;
  46. target.Source = bitmap;
  47. target.Measure(new Size(50, 50));
  48. Assert.Equal(new Size(50, 50), target.DesiredSize);
  49. }
  50. [Fact]
  51. public void Measure_Should_Return_Correct_Size_With_StretchDirection_DownOnly()
  52. {
  53. var bitmap = CreateBitmap(50, 100);
  54. var target = new Image();
  55. target.StretchDirection = StretchDirection.DownOnly;
  56. target.Source = bitmap;
  57. target.Measure(new Size(150, 150));
  58. Assert.Equal(new Size(50, 100), target.DesiredSize);
  59. }
  60. [Fact]
  61. public void Measure_Should_Return_Correct_Size_For_Infinite_Height()
  62. {
  63. var bitmap = CreateBitmap(50, 100);
  64. var image = new Image();
  65. image.Source = bitmap;
  66. image.Measure(new Size(200, double.PositiveInfinity));
  67. Assert.Equal(new Size(200, 400), image.DesiredSize);
  68. }
  69. [Fact]
  70. public void Measure_Should_Return_Correct_Size_For_Infinite_Width()
  71. {
  72. var bitmap = CreateBitmap(50, 100);
  73. var image = new Image();
  74. image.Source = bitmap;
  75. image.Measure(new Size(double.PositiveInfinity, 400));
  76. Assert.Equal(new Size(200, 400), image.DesiredSize);
  77. }
  78. [Fact]
  79. public void Measure_Should_Return_Correct_Size_For_Infinite_Width_Height()
  80. {
  81. var bitmap = CreateBitmap(50, 100);
  82. var image = new Image();
  83. image.Source = bitmap;
  84. image.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
  85. Assert.Equal(new Size(50, 100), image.DesiredSize);
  86. }
  87. [Fact]
  88. public void Arrange_Should_Return_Correct_Size_For_No_Stretch()
  89. {
  90. var bitmap = CreateBitmap(50, 100);
  91. var target = new Image();
  92. target.Stretch = Stretch.None;
  93. target.Source = bitmap;
  94. target.Measure(new Size(50, 50));
  95. target.Arrange(new Rect(0, 0, 100, 400));
  96. Assert.Equal(new Size(50, 100), target.Bounds.Size);
  97. }
  98. [Fact]
  99. public void Arrange_Should_Return_Correct_Size_For_Fill_Stretch()
  100. {
  101. var bitmap = CreateBitmap(50, 100);
  102. var target = new Image();
  103. target.Stretch = Stretch.Fill;
  104. target.Source = bitmap;
  105. target.Measure(new Size(50, 50));
  106. target.Arrange(new Rect(0, 0, 25, 100));
  107. Assert.Equal(new Size(25, 100), target.Bounds.Size);
  108. }
  109. [Fact]
  110. public void Arrange_Should_Return_Correct_Size_For_Uniform_Stretch()
  111. {
  112. var bitmap = CreateBitmap(50, 100);
  113. var target = new Image();
  114. target.Stretch = Stretch.Uniform;
  115. target.Source = bitmap;
  116. target.Measure(new Size(50, 50));
  117. target.Arrange(new Rect(0, 0, 25, 100));
  118. Assert.Equal(new Size(25, 50), target.Bounds.Size);
  119. }
  120. [Fact]
  121. public void Arrange_Should_Return_Correct_Size_For_UniformToFill_Stretch()
  122. {
  123. var bitmap = CreateBitmap(50, 100);
  124. var target = new Image();
  125. target.Stretch = Stretch.UniformToFill;
  126. target.Source = bitmap;
  127. target.Measure(new Size(50, 50));
  128. target.Arrange(new Rect(0, 0, 25, 100));
  129. Assert.Equal(new Size(25, 100), target.Bounds.Size);
  130. }
  131. private static IBitmap CreateBitmap(int width, int height)
  132. {
  133. return Mock.Of<IBitmap>(x => x.Size == new Size(width, height));
  134. }
  135. }
  136. }