PanelTests.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 System.Linq;
  4. using Avalonia.LogicalTree;
  5. using Avalonia.VisualTree;
  6. using Xunit;
  7. namespace Avalonia.Controls.UnitTests
  8. {
  9. public class PanelTests
  10. {
  11. [Fact]
  12. public void Adding_Control_To_Panel_Should_Set_Child_Controls_Parent()
  13. {
  14. var panel = new Panel();
  15. var child = new Control();
  16. panel.Children.Add(child);
  17. Assert.Same(child.Parent, panel);
  18. Assert.Same(child.GetLogicalParent(), panel);
  19. Assert.Same(child.GetVisualParent(), panel);
  20. }
  21. [Fact]
  22. public void Removing_Control_From_Panel_Should_Clear_Child_Controls_Parent()
  23. {
  24. var panel = new Panel();
  25. var child = new Control();
  26. panel.Children.Add(child);
  27. panel.Children.Remove(child);
  28. Assert.Null(child.Parent);
  29. Assert.Null(child.GetLogicalParent());
  30. Assert.Null(child.GetVisualParent());
  31. }
  32. [Fact]
  33. public void Clearing_Panel_Children_Should_Clear_Child_Controls_Parent()
  34. {
  35. var panel = new Panel();
  36. var child1 = new Control();
  37. var child2 = new Control();
  38. panel.Children.Add(child1);
  39. panel.Children.Add(child2);
  40. panel.Children.Clear();
  41. Assert.Null(child1.Parent);
  42. Assert.Null(child1.GetLogicalParent());
  43. Assert.Null(child1.GetVisualParent());
  44. Assert.Null(child2.Parent);
  45. Assert.Null(child2.GetLogicalParent());
  46. Assert.Null(child2.GetVisualParent());
  47. }
  48. [Fact]
  49. public void Replacing_Panel_Children_Should_Clear_And_Set_Control_Parent()
  50. {
  51. var panel = new Panel();
  52. var child1 = new Control();
  53. var child2 = new Control();
  54. panel.Children.Add(child1);
  55. panel.Children[0] = child2;
  56. Assert.Null(child1.Parent);
  57. Assert.Null(child1.GetLogicalParent());
  58. Assert.Null(child1.GetVisualParent());
  59. Assert.Same(child2.Parent, panel);
  60. Assert.Same(child2.GetLogicalParent(), panel);
  61. Assert.Same(child2.GetVisualParent(), panel);
  62. }
  63. [Fact]
  64. public void Child_Control_Should_Appear_In_Panel_Logical_And_Visual_Children()
  65. {
  66. var panel = new Panel();
  67. var child = new Control();
  68. panel.Children.Add(child);
  69. Assert.Equal(new[] { child }, panel.Children);
  70. Assert.Equal(new[] { child }, panel.GetLogicalChildren());
  71. Assert.Equal(new[] { child }, panel.GetVisualChildren());
  72. }
  73. [Fact]
  74. public void Removing_Child_Control_Should_Remove_From_Panel_Logical_And_Visual_Children()
  75. {
  76. var panel = new Panel();
  77. var child = new Control();
  78. panel.Children.Add(child);
  79. panel.Children.Remove(child);
  80. Assert.Equal(new Control[0], panel.Children);
  81. Assert.Empty(panel.GetLogicalChildren());
  82. Assert.Empty(panel.GetVisualChildren());
  83. }
  84. [Fact]
  85. public void Moving_Panel_Children_Should_Reoder_Logical_And_Visual_Children()
  86. {
  87. var panel = new Panel();
  88. var child1 = new Control();
  89. var child2 = new Control();
  90. panel.Children.Add(child1);
  91. panel.Children.Add(child2);
  92. panel.Children.Move(1, 0);
  93. Assert.Equal(new[] { child2, child1 }, panel.GetLogicalChildren());
  94. Assert.Equal(new[] { child2, child1 }, panel.GetVisualChildren());
  95. }
  96. }
  97. }