1
0

PanelTests.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. using System;
  2. using System.Linq;
  3. using Avalonia.LogicalTree;
  4. using Avalonia.Media;
  5. using Avalonia.Rendering;
  6. using Avalonia.UnitTests;
  7. using Avalonia.VisualTree;
  8. using Moq;
  9. using Xunit;
  10. namespace Avalonia.Controls.UnitTests
  11. {
  12. public class PanelTests : ScopedTestBase
  13. {
  14. [Fact]
  15. public void Adding_Control_To_Panel_Should_Set_Child_Controls_Parent()
  16. {
  17. var panel = new Panel();
  18. var child = new Control();
  19. panel.Children.Add(child);
  20. Assert.Same(child.Parent, panel);
  21. Assert.Same(child.GetLogicalParent(), panel);
  22. Assert.Same(child.GetVisualParent(), panel);
  23. }
  24. [Fact]
  25. public void Removing_Control_From_Panel_Should_Clear_Child_Controls_Parent()
  26. {
  27. var panel = new Panel();
  28. var child = new Control();
  29. panel.Children.Add(child);
  30. panel.Children.Remove(child);
  31. Assert.Null(child.Parent);
  32. Assert.Null(child.GetLogicalParent());
  33. Assert.Null(child.GetVisualParent());
  34. }
  35. [Fact]
  36. public void Clearing_Panel_Children_Should_Clear_Child_Controls_Parent()
  37. {
  38. var panel = new Panel();
  39. var child1 = new Control();
  40. var child2 = new Control();
  41. panel.Children.Add(child1);
  42. panel.Children.Add(child2);
  43. panel.Children.Clear();
  44. Assert.Null(child1.Parent);
  45. Assert.Null(child1.GetLogicalParent());
  46. Assert.Null(child1.GetVisualParent());
  47. Assert.Null(child2.Parent);
  48. Assert.Null(child2.GetLogicalParent());
  49. Assert.Null(child2.GetVisualParent());
  50. }
  51. [Fact]
  52. public void Replacing_Panel_Children_Should_Clear_And_Set_Control_Parent()
  53. {
  54. var panel = new Panel();
  55. var child1 = new Control();
  56. var child2 = new Control();
  57. panel.Children.Add(child1);
  58. panel.Children[0] = child2;
  59. Assert.Null(child1.Parent);
  60. Assert.Null(child1.GetLogicalParent());
  61. Assert.Null(child1.GetVisualParent());
  62. Assert.Same(child2.Parent, panel);
  63. Assert.Same(child2.GetLogicalParent(), panel);
  64. Assert.Same(child2.GetVisualParent(), panel);
  65. }
  66. [Fact]
  67. public void Child_Control_Should_Appear_In_Panel_Logical_And_Visual_Children()
  68. {
  69. var panel = new Panel();
  70. var child = new Control();
  71. panel.Children.Add(child);
  72. Assert.Equal(new[] { child }, panel.Children);
  73. Assert.Equal(new[] { child }, panel.GetLogicalChildren());
  74. Assert.Equal(new[] { child }, panel.GetVisualChildren());
  75. }
  76. [Fact]
  77. public void Removing_Child_Control_Should_Remove_From_Panel_Logical_And_Visual_Children()
  78. {
  79. var panel = new Panel();
  80. var child = new Control();
  81. panel.Children.Add(child);
  82. panel.Children.Remove(child);
  83. Assert.Equal(new Control[0], panel.Children);
  84. Assert.Empty(panel.GetLogicalChildren());
  85. Assert.Empty(panel.GetVisualChildren());
  86. }
  87. [Fact]
  88. public void Moving_Panel_Children_Should_Reoder_Logical_And_Visual_Children()
  89. {
  90. var panel = new Panel();
  91. var child1 = new Control();
  92. var child2 = new Control();
  93. panel.Children.Add(child1);
  94. panel.Children.Add(child2);
  95. panel.Children.Move(1, 0);
  96. Assert.Equal(new[] { child2, child1 }, panel.GetLogicalChildren());
  97. Assert.Equal(new[] { child2, child1 }, panel.GetVisualChildren());
  98. }
  99. [Fact]
  100. public void Adding_Null_Child_Should_Throw()
  101. {
  102. var panel = new Panel();
  103. Assert.Throws<ArgumentNullException>(() => panel.Children.Add(null!));
  104. }
  105. [Fact]
  106. public void Adding_Control_To_Items_Host_Panel_Should_Not_Affect_Logical_Children()
  107. {
  108. var child = new Control();
  109. var realParent = new ContentControl { Content = child };
  110. var panel = new Panel { IsItemsHost = true };
  111. panel.Children.Add(child);
  112. Assert.Empty(panel.LogicalChildren);
  113. Assert.Same(child.Parent, realParent);
  114. Assert.Same(child.GetLogicalParent(), realParent);
  115. Assert.Same(child.GetVisualParent(), panel);
  116. }
  117. }
  118. }