PanelTests.cs 4.2 KB

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