WrapPanelTests.cs 4.6 KB

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