CursorTests.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using Xunit.Abstractions;
  2. namespace UnitTests.ApplicationTests;
  3. public class CursorTests
  4. {
  5. private readonly ITestOutputHelper _output;
  6. public CursorTests (ITestOutputHelper output) { _output = output; }
  7. private class TestView : View
  8. {
  9. public Point? TestLocation { get; set; }
  10. /// <inheritdoc/>
  11. public override Point? PositionCursor ()
  12. {
  13. if (TestLocation.HasValue && HasFocus)
  14. {
  15. Driver?.SetCursorVisibility (CursorVisibility.Default);
  16. }
  17. return TestLocation;
  18. }
  19. }
  20. [Fact]
  21. [AutoInitShutdown]
  22. public void PositionCursor_No_Focus_Returns_False ()
  23. {
  24. Application.Navigation.SetFocused (null);
  25. Assert.False (Application.PositionCursor ());
  26. TestView view = new ()
  27. {
  28. CanFocus = false,
  29. Width = 1,
  30. Height = 1
  31. };
  32. view.TestLocation = new Point (0, 0);
  33. Assert.False (Application.PositionCursor ());
  34. }
  35. [Fact]
  36. [AutoInitShutdown]
  37. public void PositionCursor_No_Position_Returns_False ()
  38. {
  39. TestView view = new ()
  40. {
  41. CanFocus = false,
  42. Width = 1,
  43. Height = 1
  44. };
  45. view.CanFocus = true;
  46. view.SetFocus ();
  47. Assert.False (Application.PositionCursor ());
  48. }
  49. [Fact]
  50. [AutoInitShutdown]
  51. public void PositionCursor_No_IntersectSuperView_Returns_False ()
  52. {
  53. View superView = new ()
  54. {
  55. Width = 1,
  56. Height = 1
  57. };
  58. TestView view = new ()
  59. {
  60. CanFocus = false,
  61. X = 1,
  62. Y = 1,
  63. Width = 1,
  64. Height = 1
  65. };
  66. superView.Add (view);
  67. view.CanFocus = true;
  68. view.SetFocus ();
  69. view.TestLocation = new Point (0, 0);
  70. Assert.False (Application.PositionCursor ());
  71. }
  72. [Fact]
  73. [AutoInitShutdown]
  74. public void PositionCursor_Position_OutSide_SuperView_Returns_False ()
  75. {
  76. View superView = new ()
  77. {
  78. Width = 1,
  79. Height = 1
  80. };
  81. TestView view = new ()
  82. {
  83. CanFocus = false,
  84. X = 0,
  85. Y = 0,
  86. Width = 2,
  87. Height = 2
  88. };
  89. superView.Add (view);
  90. view.CanFocus = true;
  91. view.SetFocus ();
  92. view.TestLocation = new Point (1, 1);
  93. Assert.False (Application.PositionCursor ());
  94. }
  95. [Fact]
  96. [AutoInitShutdown]
  97. public void PositionCursor_Focused_With_Position_Returns_True ()
  98. {
  99. TestView view = new ()
  100. {
  101. CanFocus = false,
  102. Width = 1,
  103. Height = 1,
  104. App = ApplicationImpl.Instance
  105. };
  106. view.CanFocus = true;
  107. view.SetFocus ();
  108. view.TestLocation = new Point (0, 0);
  109. Assert.True (Application.PositionCursor ());
  110. }
  111. [Fact]
  112. [AutoInitShutdown]
  113. public void PositionCursor_Defaults_Invisible ()
  114. {
  115. View view = new ()
  116. {
  117. CanFocus = true,
  118. Width = 1,
  119. Height = 1
  120. };
  121. view.SetFocus ();
  122. Assert.True (view.HasFocus);
  123. Assert.False (Application.PositionCursor ());
  124. if (Application.Driver?.GetCursorVisibility (out CursorVisibility cursor) ?? false)
  125. {
  126. Assert.Equal (CursorVisibility.Invisible, cursor);
  127. }
  128. }
  129. }