RestoreFocusTests.cs 4.8 KB

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