RestoreFocusTests.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. using UnitTests;
  2. using Xunit.Abstractions;
  3. namespace Terminal.Gui.ViewTests;
  4. public class RestoreFocusTests () : TestsAllViews
  5. {
  6. [Fact]
  7. public void RestoreFocus_Restores ()
  8. {
  9. var view = new View
  10. {
  11. Id = "view",
  12. CanFocus = true
  13. };
  14. var subView = new View
  15. {
  16. Id = "subView",
  17. CanFocus = true
  18. };
  19. var subViewSubView1 = new View
  20. {
  21. Id = "subViewSubView1",
  22. CanFocus = true
  23. };
  24. var subViewSubView2 = new View
  25. {
  26. Id = "subViewSubView2",
  27. CanFocus = true
  28. };
  29. var subViewSubView3 = new View
  30. {
  31. Id = "subViewSubView3",
  32. CanFocus = true
  33. };
  34. subView.Add (subViewSubView1, subViewSubView2, subViewSubView3);
  35. view.Add (subView);
  36. view.SetFocus ();
  37. Assert.True (view.HasFocus);
  38. Assert.True (subView.HasFocus);
  39. Assert.Equal (subView, view.Focused);
  40. Assert.True (subViewSubView1.HasFocus);
  41. Assert.Equal (subViewSubView1, subView.Focused);
  42. view.HasFocus = false;
  43. Assert.False (view.HasFocus);
  44. Assert.False (subView.HasFocus);
  45. Assert.False (subViewSubView1.HasFocus);
  46. Assert.False (subViewSubView2.HasFocus);
  47. Assert.False (subViewSubView3.HasFocus);
  48. view.RestoreFocus ();
  49. Assert.True (view.HasFocus);
  50. Assert.True (subView.HasFocus);
  51. Assert.Equal (subView, view.Focused);
  52. Assert.Equal (subViewSubView1, subView.Focused);
  53. Assert.True (subViewSubView1.HasFocus);
  54. Assert.False (subViewSubView2.HasFocus);
  55. Assert.False (subViewSubView3.HasFocus);
  56. subViewSubView2.SetFocus ();
  57. Assert.True (view.HasFocus);
  58. Assert.True (subView.HasFocus);
  59. Assert.False (subViewSubView1.HasFocus);
  60. Assert.True (subViewSubView2.HasFocus);
  61. Assert.False (subViewSubView3.HasFocus);
  62. view.HasFocus = false;
  63. Assert.False (view.HasFocus);
  64. Assert.False (subView.HasFocus);
  65. Assert.False (subViewSubView1.HasFocus);
  66. Assert.False (subViewSubView2.HasFocus);
  67. Assert.False (subViewSubView3.HasFocus);
  68. view.RestoreFocus ();
  69. Assert.True (subView.HasFocus);
  70. Assert.Equal (subView, view.Focused);
  71. Assert.True (subViewSubView2.HasFocus);
  72. Assert.Equal (subViewSubView2, subView.Focused);
  73. Assert.False (subViewSubView1.HasFocus);
  74. Assert.False (subViewSubView3.HasFocus);
  75. }
  76. [Fact]
  77. public void RestoreFocus_Across_TabGroup ()
  78. {
  79. var top = new View
  80. {
  81. Id = "top",
  82. CanFocus = true,
  83. TabStop = TabBehavior.TabGroup
  84. };
  85. var tabGroup1 = new View
  86. {
  87. Id = "tabGroup1",
  88. CanFocus = true,
  89. TabStop = TabBehavior.TabGroup
  90. };
  91. var tabGroup1SubView1 = new View
  92. {
  93. Id = "tabGroup1SubView1",
  94. CanFocus = true,
  95. TabStop = TabBehavior.TabStop
  96. };
  97. var tabGroup1SubView2 = new View
  98. {
  99. Id = "tabGroup1SubView2",
  100. CanFocus = true,
  101. TabStop = TabBehavior.TabStop
  102. };
  103. tabGroup1.Add (tabGroup1SubView1, tabGroup1SubView2);
  104. var tabGroup2 = new View
  105. {
  106. Id = "tabGroup2",
  107. CanFocus = true,
  108. TabStop = TabBehavior.TabGroup
  109. };
  110. var tabGroup2SubView1 = new View
  111. {
  112. Id = "tabGroup2SubView1",
  113. CanFocus = true,
  114. TabStop = TabBehavior.TabStop
  115. };
  116. var tabGroup2SubView2 = new View
  117. {
  118. Id = "tabGroup2SubView2",
  119. CanFocus = true,
  120. TabStop = TabBehavior.TabStop
  121. };
  122. tabGroup2.Add (tabGroup2SubView1, tabGroup2SubView2);
  123. top.Add (tabGroup1, tabGroup2);
  124. top.SetFocus ();
  125. Assert.True (top.HasFocus);
  126. Assert.Equal (tabGroup1, top.Focused);
  127. Assert.Equal (tabGroup1SubView1, tabGroup1.Focused);
  128. top.AdvanceFocus (NavigationDirection.Forward, TabBehavior.TabGroup);
  129. Assert.True (top.HasFocus);
  130. Assert.Equal (tabGroup2, top.Focused);
  131. Assert.Equal (tabGroup2SubView1, tabGroup2.Focused);
  132. top.HasFocus = false;
  133. Assert.False (top.HasFocus);
  134. top.RestoreFocus ();
  135. Assert.True (top.HasFocus);
  136. Assert.Equal (tabGroup2, top.Focused);
  137. Assert.Equal (tabGroup2SubView1, tabGroup2.Focused);
  138. top.HasFocus = false;
  139. Assert.False (top.HasFocus);
  140. top.RestoreFocus ();
  141. Assert.True (top.HasFocus);
  142. Assert.Equal (tabGroup2, top.Focused);
  143. Assert.Equal (tabGroup2SubView1, tabGroup2.Focused);
  144. }
  145. }