RelativePanelTests.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using Avalonia.Controls.Shapes;
  2. using Xunit;
  3. namespace Avalonia.Controls.UnitTests
  4. {
  5. public class RelativePanelTests
  6. {
  7. [Fact]
  8. public void Lays_Out_1_Child_Next_the_other()
  9. {
  10. var rect1 = new Rectangle { Height = 20, Width = 20 };
  11. var rect2 = new Rectangle { Height = 20, Width = 20 };
  12. var target = new RelativePanel
  13. {
  14. VerticalAlignment = Layout.VerticalAlignment.Top,
  15. HorizontalAlignment = Layout.HorizontalAlignment.Left,
  16. Children =
  17. {
  18. rect1, rect2
  19. }
  20. };
  21. RelativePanel.SetAlignLeftWithPanel(rect1 , true);
  22. RelativePanel.SetRightOf(rect2, rect1);
  23. target.Measure(new Size(400, 400));
  24. target.Arrange(new Rect(target.DesiredSize));
  25. Assert.Equal(new Size(40, 20), target.Bounds.Size);
  26. Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds);
  27. Assert.Equal(new Rect(20, 0, 20, 20), target.Children[1].Bounds);
  28. }
  29. [Fact]
  30. public void Lays_Out_1_Child_Below_the_other()
  31. {
  32. var rect1 = new Rectangle { Height = 20, Width = 20 };
  33. var rect2 = new Rectangle { Height = 20, Width = 20 };
  34. var target = new RelativePanel
  35. {
  36. VerticalAlignment = Layout.VerticalAlignment.Top,
  37. HorizontalAlignment = Layout.HorizontalAlignment.Left,
  38. Children =
  39. {
  40. rect1, rect2
  41. }
  42. };
  43. RelativePanel.SetAlignLeftWithPanel(rect1, true);
  44. RelativePanel.SetBelow(rect2, rect1);
  45. target.Measure(new Size(400, 400));
  46. target.Arrange(new Rect(target.DesiredSize));
  47. Assert.Equal(new Size(20, 40), target.Bounds.Size);
  48. Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds);
  49. Assert.Equal(new Rect(0, 20, 20, 20), target.Children[1].Bounds);
  50. }
  51. [Fact]
  52. public void RelativePanel_Can_Center()
  53. {
  54. var rect1 = new Rectangle { Height = 20, Width = 20 };
  55. var rect2 = new Rectangle { Height = 20, Width = 20 };
  56. var target = new RelativePanel
  57. {
  58. VerticalAlignment = Layout.VerticalAlignment.Center,
  59. HorizontalAlignment = Layout.HorizontalAlignment.Center,
  60. Children =
  61. {
  62. rect1, rect2
  63. }
  64. };
  65. RelativePanel.SetAlignLeftWithPanel(rect1, true);
  66. RelativePanel.SetBelow(rect2, rect1);
  67. target.Measure(new Size(400, 400));
  68. target.Arrange(new Rect(target.DesiredSize));
  69. Assert.Equal(new Size(20, 40), target.Bounds.Size);
  70. Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds);
  71. Assert.Equal(new Rect(0, 20, 20, 20), target.Children[1].Bounds);
  72. }
  73. [Fact]
  74. public void LeftOf_Measures_Correctly()
  75. {
  76. var rect1 = new Rectangle { Height = 20, Width = 20 };
  77. var rect2 = new Rectangle { Height = 20, Width = 20 };
  78. var target = new RelativePanel
  79. {
  80. VerticalAlignment = Layout.VerticalAlignment.Center,
  81. HorizontalAlignment = Layout.HorizontalAlignment.Center,
  82. Children =
  83. {
  84. rect1, rect2
  85. }
  86. };
  87. RelativePanel.SetLeftOf(rect2, rect1);
  88. target.Measure(new Size(400, 400));
  89. target.Arrange(new Rect(target.DesiredSize));
  90. Assert.Equal(new Size(20, 20), target.Bounds.Size);
  91. Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds);
  92. Assert.Equal(new Rect(-20, 0, 20, 20), target.Children[1].Bounds);
  93. }
  94. [Fact]
  95. public void Above_Measures_Correctly()
  96. {
  97. var rect1 = new Rectangle { Height = 20, Width = 20 };
  98. var rect2 = new Rectangle { Height = 20, Width = 20 };
  99. var target = new RelativePanel
  100. {
  101. VerticalAlignment = Layout.VerticalAlignment.Center,
  102. HorizontalAlignment = Layout.HorizontalAlignment.Center,
  103. Children =
  104. {
  105. rect1, rect2
  106. }
  107. };
  108. RelativePanel.SetAbove(rect2, rect1);
  109. target.Measure(new Size(400, 400));
  110. target.Arrange(new Rect(target.DesiredSize));
  111. Assert.Equal(new Size(20, 20), target.Bounds.Size);
  112. Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds);
  113. Assert.Equal(new Rect(0, -20, 20, 20), target.Children[1].Bounds);
  114. }
  115. }
  116. }