BasicFluentAssertionTests.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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 (38, lbl.Frame.Width)) // Window has 2 border
  42. .ResizeConsole (20, 20)
  43. .Then (() => Assert.Equal (18, lbl.Frame.Width))
  44. .WriteOutLogs (_out)
  45. .Stop ();
  46. }
  47. [Theory]
  48. [ClassData (typeof (V2TestDrivers))]
  49. public void ContextMenu_CrashesOnRight (V2TestDriver d)
  50. {
  51. var clicked = false;
  52. MenuItemv2 [] menuItems = [new ("_New File", string.Empty, () => { clicked = true; })];
  53. using GuiTestContext c = With.A<Window> (40, 10, d)
  54. .WithContextMenu (new PopoverMenu(menuItems))
  55. .ScreenShot ("Before open menu", _out)
  56. // Click in main area inside border
  57. .RightClick (1, 1)
  58. .ScreenShot ("After open menu", _out)
  59. .LeftClick (2, 2)
  60. .Stop ()
  61. .WriteOutLogs (_out);
  62. Assert.True (clicked);
  63. }
  64. [Theory]
  65. [ClassData (typeof (V2TestDrivers))]
  66. public void ContextMenu_OpenSubmenu (V2TestDriver d)
  67. {
  68. var clicked = false;
  69. MenuItemv2 [] menuItems = [
  70. new ("One", "", null),
  71. new ("Two", "", null),
  72. new ("Three", "", null),
  73. new ("Four", "", new (
  74. [
  75. new ("SubMenu1", "", null),
  76. new ("SubMenu2", "", ()=>clicked=true),
  77. new ("SubMenu3", "", null),
  78. new ("SubMenu4", "", null),
  79. new ("SubMenu5", "", null),
  80. new ("SubMenu6", "", null),
  81. new ("SubMenu7", "", null)
  82. ])),
  83. new ("Five", "", null),
  84. new ("Six", "", null)
  85. ];
  86. using GuiTestContext c = With.A<Window> (40, 10,d)
  87. .WithContextMenu (new PopoverMenu (menuItems))
  88. .ScreenShot ("Before open menu", _out)
  89. // Click in main area inside border
  90. .RightClick (1, 1)
  91. .ScreenShot ("After open menu", _out)
  92. .Down ()
  93. .Down ()
  94. .Down ()
  95. .Right()
  96. .ScreenShot ("After open submenu", _out)
  97. .Down ()
  98. .Enter ()
  99. .ScreenShot ("Menu should be closed after selecting", _out)
  100. .Stop ()
  101. .WriteOutLogs (_out);
  102. Assert.True (clicked);
  103. }
  104. }