PanelTests.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. // -----------------------------------------------------------------------
  2. // <copyright file="PanelTests.cs" company="Steven Kirk">
  3. // Copyright 2013 MIT Licence. See licence.md for more information.
  4. // </copyright>
  5. // -----------------------------------------------------------------------
  6. namespace Perspex.Controls.UnitTests
  7. {
  8. using System.Linq;
  9. using Perspex.Collections;
  10. using Perspex.LogicalTree;
  11. using Xunit;
  12. public class PanelTests
  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.Equal(child.Parent, panel);
  21. Assert.Equal(child.GetLogicalParent(), panel);
  22. }
  23. [Fact]
  24. public void Setting_Controls_Should_Set_Child_Controls_Parent()
  25. {
  26. var panel = new Panel();
  27. var child = new Control();
  28. panel.Children = new Controls { child };
  29. Assert.Equal(child.Parent, panel);
  30. Assert.Equal(child.GetLogicalParent(), panel);
  31. }
  32. [Fact]
  33. public void Removing_Control_From_Panel_Should_Clear_Child_Controls_Parent()
  34. {
  35. var panel = new Panel();
  36. var child = new Control();
  37. panel.Children.Add(child);
  38. panel.Children.Remove(child);
  39. Assert.Null(child.Parent);
  40. Assert.Null(child.GetLogicalParent());
  41. }
  42. [Fact]
  43. public void Clearing_Panel_Children_Should_Clear_Child_Controls_Parent()
  44. {
  45. var panel = new Panel();
  46. var child1 = new Control();
  47. var child2 = new Control();
  48. panel.Children.Add(child1);
  49. panel.Children.Add(child2);
  50. panel.Children.Clear();
  51. Assert.Null(child1.Parent);
  52. Assert.Null(child1.GetLogicalParent());
  53. Assert.Null(child2.Parent);
  54. Assert.Null(child2.GetLogicalParent());
  55. }
  56. [Fact]
  57. public void Resetting_Panel_Children_Should_Clear_Child_Controls_Parent()
  58. {
  59. var panel = new Panel();
  60. var child1 = new Control();
  61. var child2 = new Control();
  62. panel.Children.Add(child1);
  63. panel.Children.Add(child2);
  64. panel.Children = new Controls();
  65. Assert.Null(child1.Parent);
  66. Assert.Null(child1.GetLogicalParent());
  67. Assert.Null(child2.Parent);
  68. Assert.Null(child2.GetLogicalParent());
  69. }
  70. [Fact]
  71. public void Setting_Children_Should_Make_Controls_Appear_In_Panel_Children()
  72. {
  73. var panel = new Panel();
  74. var child = new Control();
  75. panel.Children = new Controls { child };
  76. Assert.Equal(new[] { child }, panel.Children);
  77. Assert.Equal(new[] { child }, panel.GetLogicalChildren());
  78. }
  79. [Fact]
  80. public void Child_Control_Should_Appear_In_Panel_Children()
  81. {
  82. var panel = new Panel();
  83. var child = new Control();
  84. panel.Children.Add(child);
  85. Assert.Equal(new[] { child }, panel.Children);
  86. Assert.Equal(new[] { child }, panel.GetLogicalChildren());
  87. }
  88. [Fact]
  89. public void Removing_Child_Control_Should_Remove_From_Panel_Children()
  90. {
  91. var panel = new Panel();
  92. var child = new Control();
  93. panel.Children.Add(child);
  94. panel.Children.Remove(child);
  95. Assert.Equal(new Control[0], panel.Children);
  96. Assert.Equal(new ILogical[0], panel.GetLogicalChildren());
  97. }
  98. [Fact]
  99. public void Should_Be_Able_To_Reparent_Child_Controls()
  100. {
  101. var target = new Panel();
  102. var parent = new TestReparent();
  103. var control1 = new Control();
  104. var control2 = new Control();
  105. target.Children.Add(control1);
  106. ((IReparentingControl)target).ReparentLogicalChildren(parent, parent.LogicalChildren);
  107. target.Children.Add(control2);
  108. Assert.Equal(new[] { control1, control2 }, parent.LogicalChildren);
  109. Assert.Equal(parent, target.Children[0].Parent);
  110. Assert.Equal(parent, target.Children[1].Parent);
  111. }
  112. private class TestReparent : Panel
  113. {
  114. public new IPerspexList<ILogical> LogicalChildren
  115. {
  116. get { return base.LogicalChildren; }
  117. }
  118. }
  119. }
  120. }