BasicFluentAssertionTests.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using System.Text;
  2. using Terminal.Gui;
  3. using TerminalGuiFluentTesting;
  4. using Xunit.Abstractions;
  5. namespace IntegrationTests.FluentTests;
  6. public class BasicFluentAssertionTests
  7. {
  8. private readonly TextWriter _out;
  9. public class TestOutputWriter : TextWriter
  10. {
  11. private readonly ITestOutputHelper _output;
  12. public TestOutputWriter (ITestOutputHelper output) { _output = output; }
  13. public override void WriteLine (string? value) { _output.WriteLine (value ?? string.Empty); }
  14. public override Encoding Encoding => Encoding.UTF8;
  15. }
  16. public BasicFluentAssertionTests (ITestOutputHelper outputHelper) { _out = new TestOutputWriter (outputHelper); }
  17. [Theory]
  18. [ClassData (typeof (V2TestDrivers))]
  19. public void GuiTestContext_StartsAndStopsWithoutError (V2TestDriver d)
  20. {
  21. using GuiTestContext context = With.A<Window> (40, 10,d);
  22. // No actual assertions are needed — if no exceptions are thrown, it's working
  23. context.Stop ();
  24. }
  25. [Theory]
  26. [ClassData (typeof (V2TestDrivers))]
  27. public void GuiTestContext_ForgotToStop (V2TestDriver d)
  28. {
  29. using GuiTestContext context = With.A<Window> (40, 10, d);
  30. }
  31. [Theory]
  32. [ClassData (typeof (V2TestDrivers))]
  33. public void TestWindowsResize (V2TestDriver d)
  34. {
  35. var lbl = new Label
  36. {
  37. Width = Dim.Fill ()
  38. };
  39. using GuiTestContext c = With.A<Window> (40, 10, d)
  40. .Add (lbl)
  41. .Then (() => Assert.Equal (lbl.Frame.Width, 38)) // Window has 2 border
  42. .ResizeConsole (20, 20)
  43. .Then (() => Assert.Equal (lbl.Frame.Width, 18))
  44. .Stop ();
  45. }
  46. [Theory]
  47. [ClassData (typeof (V2TestDrivers))]
  48. public void ContextMenu_CrashesOnRight (V2TestDriver d)
  49. {
  50. var clicked = false;
  51. var ctx = new ContextMenu ();
  52. var menuItems = new MenuBarItem (
  53. [
  54. new ("_New File", string.Empty, () => { clicked = true; })
  55. ]
  56. );
  57. using GuiTestContext c = With.A<Window> (40, 10, d)
  58. .WithContextMenu (ctx, menuItems)
  59. .ScreenShot ("Before open menu", _out)
  60. // Click in main area inside border
  61. .RightClick (1, 1)
  62. .ScreenShot ("After open menu", _out)
  63. .LeftClick (3, 3)
  64. .Stop ()
  65. .WriteOutLogs (_out);
  66. Assert.True (clicked);
  67. }
  68. [Theory]
  69. [ClassData (typeof (V2TestDrivers))]
  70. public void ContextMenu_OpenSubmenu (V2TestDriver d)
  71. {
  72. var clicked = false;
  73. var ctx = new ContextMenu ();
  74. var menuItems = new MenuBarItem (
  75. [
  76. new MenuItem ("One", "", null),
  77. new MenuItem ("Two", "", null),
  78. new MenuItem ("Three", "", null),
  79. new MenuBarItem (
  80. "Four",
  81. [
  82. new MenuItem ("SubMenu1", "", null),
  83. new MenuItem ("SubMenu2", "", ()=>clicked=true),
  84. new MenuItem ("SubMenu3", "", null),
  85. new MenuItem ("SubMenu4", "", null),
  86. new MenuItem ("SubMenu5", "", null),
  87. new MenuItem ("SubMenu6", "", null),
  88. new MenuItem ("SubMenu7", "", null)
  89. ]
  90. ),
  91. new MenuItem ("Five", "", null),
  92. new MenuItem ("Six", "", null)
  93. ]
  94. );
  95. using GuiTestContext c = With.A<Window> (40, 10,d)
  96. .WithContextMenu (ctx, menuItems)
  97. .ScreenShot ("Before open menu", _out)
  98. // Click in main area inside border
  99. .RightClick (1, 1)
  100. .ScreenShot ("After open menu", _out)
  101. .Down ()
  102. .Down ()
  103. .Down ()
  104. .Right()
  105. .ScreenShot ("After open submenu", _out)
  106. .Down ()
  107. .Enter ()
  108. .ScreenShot ("Menu should be closed after selecting", _out)
  109. .Stop ()
  110. .WriteOutLogs (_out);
  111. Assert.True (clicked);
  112. }
  113. }