WrapPanelTests.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. // Copyright (c) The Avalonia Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using Avalonia.Layout;
  4. using Xunit;
  5. namespace Avalonia.Controls.UnitTests
  6. {
  7. public class WrapPanelTests
  8. {
  9. [Fact]
  10. public void Lays_Out_Horizontally_On_Separate_Lines()
  11. {
  12. var target = new WrapPanel()
  13. {
  14. Width = 100,
  15. Children =
  16. {
  17. new Border { Height = 50, Width = 100 },
  18. new Border { Height = 50, Width = 100 },
  19. }
  20. };
  21. target.Measure(Size.Infinity);
  22. target.Arrange(new Rect(target.DesiredSize));
  23. Assert.Equal(new Size(100, 100), target.Bounds.Size);
  24. Assert.Equal(new Rect(0, 0, 100, 50), target.Children[0].Bounds);
  25. Assert.Equal(new Rect(0, 50, 100, 50), target.Children[1].Bounds);
  26. }
  27. [Fact]
  28. public void Lays_Out_Horizontally_On_A_Single_Line()
  29. {
  30. var target = new WrapPanel()
  31. {
  32. Width = 200,
  33. Children =
  34. {
  35. new Border { Height = 50, Width = 100 },
  36. new Border { Height = 50, Width = 100 },
  37. }
  38. };
  39. target.Measure(Size.Infinity);
  40. target.Arrange(new Rect(target.DesiredSize));
  41. Assert.Equal(new Size(200, 50), target.Bounds.Size);
  42. Assert.Equal(new Rect(0, 0, 100, 50), target.Children[0].Bounds);
  43. Assert.Equal(new Rect(100, 0, 100, 50), target.Children[1].Bounds);
  44. }
  45. [Fact]
  46. public void Lays_Out_Vertically_Children_On_A_Single_Line()
  47. {
  48. var target = new WrapPanel()
  49. {
  50. Orientation = Orientation.Vertical,
  51. Height = 120,
  52. Children =
  53. {
  54. new Border { Height = 50, Width = 100 },
  55. new Border { Height = 50, Width = 100 },
  56. }
  57. };
  58. target.Measure(Size.Infinity);
  59. target.Arrange(new Rect(target.DesiredSize));
  60. Assert.Equal(new Size(100, 120), target.Bounds.Size);
  61. Assert.Equal(new Rect(0, 0, 100, 50), target.Children[0].Bounds);
  62. Assert.Equal(new Rect(0, 50, 100, 50), target.Children[1].Bounds);
  63. }
  64. [Fact]
  65. public void Lays_Out_Vertically_On_Separate_Lines()
  66. {
  67. var target = new WrapPanel()
  68. {
  69. Orientation = Orientation.Vertical,
  70. Height = 60,
  71. Children =
  72. {
  73. new Border { Height = 50, Width = 100 },
  74. new Border { Height = 50, Width = 100 },
  75. }
  76. };
  77. target.Measure(Size.Infinity);
  78. target.Arrange(new Rect(target.DesiredSize));
  79. Assert.Equal(new Size(200, 60), target.Bounds.Size);
  80. Assert.Equal(new Rect(0, 0, 100, 50), target.Children[0].Bounds);
  81. Assert.Equal(new Rect(100, 0, 100, 50), target.Children[1].Bounds);
  82. }
  83. [Fact]
  84. public void Applies_ItemWidth_And_ItemHeight_Properties()
  85. {
  86. var target = new WrapPanel()
  87. {
  88. Orientation = Orientation.Horizontal,
  89. Width = 50,
  90. ItemWidth = 20,
  91. ItemHeight = 15,
  92. Children =
  93. {
  94. new Border(),
  95. new Border(),
  96. }
  97. };
  98. target.Measure(Size.Infinity);
  99. target.Arrange(new Rect(target.DesiredSize));
  100. Assert.Equal(new Size(50, 15), target.Bounds.Size);
  101. Assert.Equal(new Rect(0, 0, 20, 15), target.Children[0].Bounds);
  102. Assert.Equal(new Rect(20, 0, 20, 15), target.Children[1].Bounds);
  103. }
  104. [Fact]
  105. void ItemWidth_Trigger_InvalidateMeasure()
  106. {
  107. var target = new WrapPanel();
  108. target.Measure(new Size(10, 10));
  109. Assert.True(target.IsMeasureValid);
  110. target.ItemWidth = 1;
  111. Assert.False(target.IsMeasureValid);
  112. }
  113. [Fact]
  114. void ItemHeight_Trigger_InvalidateMeasure()
  115. {
  116. var target = new WrapPanel();
  117. target.Measure(new Size(10, 10));
  118. Assert.True(target.IsMeasureValid);
  119. target.ItemHeight = 1;
  120. Assert.False(target.IsMeasureValid);
  121. }
  122. }
  123. }