ImageTests.cs 5.1 KB

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