LabelTests.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using UnitTests;
  2. namespace UnitTests_Parallelizable.ViewsTests;
  3. /// <summary>
  4. /// Pure unit tests for <see cref="Label"/> that don't require Application.Driver or Application context.
  5. /// These tests can run in parallel without interference.
  6. /// </summary>
  7. public class LabelTests : FakeDriverBase
  8. {
  9. [Fact]
  10. public void Text_Mirrors_Title ()
  11. {
  12. var label = new Label ();
  13. label.Title = "Hello";
  14. Assert.Equal ("Hello", label.Title);
  15. Assert.Equal ("Hello", label.TitleTextFormatter.Text);
  16. Assert.Equal ("Hello", label.Text);
  17. Assert.Equal ("Hello", label.TextFormatter.Text);
  18. }
  19. [Fact]
  20. public void Title_Mirrors_Text ()
  21. {
  22. var label = new Label ();
  23. label.Text = "Hello";
  24. Assert.Equal ("Hello", label.Text);
  25. Assert.Equal ("Hello", label.TextFormatter.Text);
  26. Assert.Equal ("Hello", label.Title);
  27. Assert.Equal ("Hello", label.TitleTextFormatter.Text);
  28. }
  29. [Theory]
  30. [CombinatorialData]
  31. public void HotKey_Command_SetsFocus_OnNextSubView (bool hasHotKey)
  32. {
  33. var superView = new View { CanFocus = true };
  34. var label = new Label ();
  35. label.HotKey = hasHotKey ? Key.A.WithAlt : Key.Empty;
  36. var nextSubView = new View { CanFocus = true };
  37. superView.Add (label, nextSubView);
  38. superView.BeginInit ();
  39. superView.EndInit ();
  40. Assert.False (label.HasFocus);
  41. Assert.False (nextSubView.HasFocus);
  42. label.InvokeCommand (Command.HotKey);
  43. Assert.False (label.HasFocus);
  44. Assert.Equal (hasHotKey, nextSubView.HasFocus);
  45. }
  46. [Theory]
  47. [CombinatorialData]
  48. public void MouseClick_SetsFocus_OnNextSubView (bool hasHotKey)
  49. {
  50. var superView = new View { CanFocus = true, Height = 1, Width = 15 };
  51. var focusedView = new View { CanFocus = true, Width = 1, Height = 1 };
  52. var label = new Label { X = 2 };
  53. label.HotKey = hasHotKey ? Key.X.WithAlt : Key.Empty;
  54. var nextSubView = new View { CanFocus = true, X = 4, Width = 4, Height = 1 };
  55. superView.Add (focusedView, label, nextSubView);
  56. superView.BeginInit ();
  57. superView.EndInit ();
  58. Assert.False (focusedView.HasFocus);
  59. Assert.False (label.HasFocus);
  60. Assert.False (nextSubView.HasFocus);
  61. label.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked });
  62. Assert.False (label.HasFocus);
  63. Assert.Equal (hasHotKey, nextSubView.HasFocus);
  64. }
  65. [Fact]
  66. public void HotKey_Command_Does_Not_Accept ()
  67. {
  68. var label = new Label ();
  69. var accepted = false;
  70. label.Accepting += LabelOnAccept;
  71. label.InvokeCommand (Command.HotKey);
  72. Assert.False (accepted);
  73. return;
  74. void LabelOnAccept (object sender, CommandEventArgs e) { accepted = true; }
  75. }
  76. [Fact]
  77. public void Constructors_Defaults ()
  78. {
  79. var label = new Label ();
  80. Assert.Equal (string.Empty, label.Text);
  81. Assert.Equal (Alignment.Start, label.TextAlignment);
  82. Assert.False (label.CanFocus);
  83. Assert.Equal (new (0, 0, 0, 0), label.Frame);
  84. Assert.Equal (KeyCode.Null, label.HotKey);
  85. }
  86. [Fact]
  87. public void Label_HotKeyChanged_EventFires ()
  88. {
  89. var label = new Label ();
  90. var fired = false;
  91. Key oldKey = Key.Empty;
  92. Key newKey = Key.Empty;
  93. label.HotKeyChanged += (s, e) =>
  94. {
  95. fired = true;
  96. oldKey = e.OldKey;
  97. newKey = e.NewKey;
  98. };
  99. label.HotKey = Key.A.WithAlt;
  100. Assert.True (fired);
  101. Assert.Equal (Key.Empty, oldKey);
  102. Assert.Equal (Key.A.WithAlt, newKey);
  103. }
  104. [Fact]
  105. public void Label_HotKeyChanged_EventFires_WithNone ()
  106. {
  107. var label = new Label { HotKey = Key.A.WithAlt };
  108. var fired = false;
  109. Key oldKey = Key.Empty;
  110. Key newKey = Key.Empty;
  111. label.HotKeyChanged += (s, e) =>
  112. {
  113. fired = true;
  114. oldKey = e.OldKey;
  115. newKey = e.NewKey;
  116. };
  117. label.HotKey = Key.Empty;
  118. Assert.True (fired);
  119. Assert.Equal (Key.A.WithAlt, oldKey);
  120. Assert.Equal (Key.Empty, newKey);
  121. }
  122. [Fact]
  123. public void TestAssignTextToLabel ()
  124. {
  125. var label = new Label ();
  126. label.Text = "Test";
  127. Assert.Equal ("Test", label.Text);
  128. }
  129. }