PanelTests.cs 4.3 KB

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